Manpages en espanyol en una Debian en català

febrer 15, 2009

Que jo sàpiga, a Debian no hi ha les versions en català de les pàgines dels manuals. De manera que si consultem el manual de qualsevol comanda el veurem, per defecte, en anglès.

# man ls | grep ls | head -n 1
ls – list directory contents

Si ens interessa veure les pàgines en espanyol, podem configurar els locales per al nostre usuari amb aquest idioma. Haurem de tenir instal·lats els paquets locales, manpages-es i manpages-es-extra.

Podem veure quins locales tenim disponibles si consultem el fitxer /etc/locale.gen:

# cat /etc/locale.gen
ca_ES.UTF-8 UTF-8

I, encara que en aquest cas resulta obvi, el locale per defecte del sistema es troba indicat a /etc/default/locale:

# cat /etc/default/locale
LANG=ca_ES.UTF-8

Si volem generar nous locales, pot fer-se de forma manual (editant el fitxer /etc/locale.gen i executant locale-gen), però crec que és molt més còmode i segur fer servir dpkg-reconfigure.

#dpkg-reconfigure locales

A banda del català, marcarem els locales de l’espanyol d’Espanya (es_ES):

[*] es_ES ISO-8859-1
[*] es_ES.UTF-8 UTF-8
[*] es_ES@euro ISO-8859-15

i escollirem per defecte el quin vulguem (jo hi he deixat el ca_ES.UTF-8 que ja tenia). De fet n’hi hauria prou triant-ne un dels espanyols per tenir els manuals en aquest idioma. Però deixem-ho així i anem a veure com ho ha de fer cada usuari per a configurar l’idioma dels seus manuals.

Important! Si en fer el dpkg-reconfigure veieu que no genera els locales automàticament (no ho farà, per exemple, si teniu el paquet locales-all instal·lat) haureu d’executar:

# locale-gen

A partir d’aquí les configuracions ja no les hem de fer com a root sinó com un usuari del sistema.

Com és lògic, cada usuari, si no ho canvia tindrà predeterminat el locale per defecte del sistema.

$ locale
LANG=ca_ES.UTF-8
LC_CTYPE=”ca_ES.UTF-8″
LC_NUMERIC=”ca_ES.UTF-8″
LC_TIME=”ca_ES.UTF-8″
LC_COLLATE=”ca_ES.UTF-8″
LC_MONETARY=”ca_ES.UTF-8″
LC_MESSAGES=”ca_ES.UTF-8″
LC_PAPER=”ca_ES.UTF-8″
LC_NAME=”ca_ES.UTF-8″
LC_ADDRESS=”ca_ES.UTF-8″
LC_TELEPHONE=”ca_ES.UTF-8″
LC_MEASUREMENT=”ca_ES.UTF-8″
LC_IDENTIFICATION=”ca_ES.UTF-8″
LC_ALL=

Trobareu més informació sobre aquestes variables aquí o aquí. El que hem de saber és que la variable LC_ALL sobreescriu el valor de totes les altres i que la variable que defineix l’idioma dels manuals és LC_MESSAGES.

En resum, si volem aplicar el locale es_ES ISO 8859-1 farem:

export LC_MESSAGES=es_ES

Si volem aplicar el locale es_ES.UTF-8 UTF-8 farem:

export LC_MESSAGES=es_ES.UTF-8

I si volem aplicar el locale es_ES@euro ISO-8859-15 farem:

export LC_MESSAGES=es_ES@euro

Aleshores, comprovem el valor de les variables:

$ locale
LANG=ca_ES.UTF-8
LC_CTYPE=”ca_ES.UTF-8″
LC_NUMERIC=”ca_ES.UTF-8″
LC_TIME=”ca_ES.UTF-8″
LC_COLLATE=”ca_ES.UTF-8″
LC_MONETARY=”ca_ES.UTF-8″
LC_MESSAGES=es_ES.UTF-8
LC_PAPER=”ca_ES.UTF-8″
LC_NAME=”ca_ES.UTF-8″
LC_ADDRESS=”ca_ES.UTF-8″
LC_TELEPHONE=”ca_ES.UTF-8″
LC_MEASUREMENT=”ca_ES.UTF-8″
LC_IDENTIFICATION=”ca_ES.UTF-8″
LC_ALL=

I que, efectivament el manual aparegui en castellà:

$ man ls | grep ls | head -n 1
ls, dir, vdir – listan los contenidos de directorios

Per descomptat, si l’usuari vol que aquests canvis siguin permanents haurà de modificar el valor de la variable en el seu fitxer ~/.bashrc

echo “export LC_MESSAGES=es_ES.UTF-8” >> ~/.bashrc


Habilitar diversos terminals gràfics locals

febrer 9, 2009

Tant si usem xdm, com kdm o gdm, la configuració per defecte a Debian (i suposo que a la majoria de distribucions GNU/Linux) fa que només tinguem un escriptori gràfic disponible (normalment al terminal vt7). Com podem fer-ho per tenir-ne més d’un?

Si fem servir kdm (K Display Manager)

Les versions actuals de kdm ja no usen un fitxer anomenat Xservers (antigament situat al directori de configuració del kdm) per a controlar quins servidors locals cal engegar. Aquesta configuració, molt més senzilla, pot fer-se des del propi fitxer kdmrc (normalment a /etc/kde3/kdm/kdmrc)

[General]
ConfigVersion=2.3
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/run/kdm.pid
ReserveServers=:1,:2,:3
ServerVTs=-7
StaticServers=:0

Les tres últimes línies són les que ens interessen. StaticServers és la que indica quants (i quins) servidors gràfics s’engegaran per defecte. ServerVTs indica en quins terminals s’engegaran aquests servidors (el guió “-” evita que s’utilitzi vt7 si ja està ocupat. En aquest cas s’utilitzaria el primer que estigués lliure). Finalment ReserveServers indica quins terminals gràfics estan a la reserva o, el que és el mateix, quins podem engegar posteriorment (però que no s’engegaran de forma automàtica). Així doncs, si per defecte volem dos servidors gràfics als terminals vt7 i vt8 modificarem el fitxer així:

[General]
ConfigVersion=2.3
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/run/kdm.pid
ReserveServers=:2,:3
ServerVTs=-7,-8
StaticServers=:0,:1

Si fem servir gdm (GNOME Display Manager)

Encara és més fàcil. Només cal editar /etc/gdm/gdm.conf i modificar la secció [servers]:

[servers]
0=Standard vt7
1=Standard vt8

Amb això, haurem definit dos servidors gràfics als terminals vt7 i vt8.

Si fem servir xdm (X Display Manager)

xdm sí que utilitza el fitxers Xservers, com les versions velles de kdm i gdm, per tant, si volem iniciar dos servidors gràfics a vt7 i vt8 caldrà que editem /etc/X11/xdm/Xservers i el configurem així:

:0 local /usr/bin/X :0 vt7 -nolisten tcp
:1 local /usr/bin/X :1 vt8 -nolisten tcp


Usar el servidor X d’un altre usuari

febrer 8, 2009

Per defecte Debian no permet que l’usuari root iniciï una sessió gràfica, però de tant en tant ens pot interessar executar algun programa que utilitzi finestres des d’un terminal de root a l’entorn gràfic.

llengot:~# kcalc
kcalc: cannot connect to X server

Això ho podem arreglar donant permís a l’usuari root perquè utilitzi el servidor X de l’usuari que ha iniciat la sessió. L’usuari haurà d’executar:

xhost +local:

I d’aquesta manera s’indica que els usuaris locals tenen permís per usar aquest servidor X. Després, root haurà d’instanciar la seva variable DISPLAY fent:

export DISPLAY=:0.0

I immediatament ja podrà llançar comandes que obrin programes gràfics des de la consola (només durant la sessió actual, és clar).


El meu Debian va calent… (2)

Mai 29, 2008

[O bé: ni KLaptop, ni KPowersave, ni hòsties!]

Cada cop que engego el sistema i també cada X temps, el valor de la “variable”

/sys/devices/system/cpu/cpuN/cpufreq/scaling_min_freq

(per N=0 i N=1) canvia a 1826000 (1.8 Ghz) i, encara que tan sols estigui navegant per internet, al cap d’una estona ja tenim actiu l’efecte estufa que comentava el lluís.

A més a més, he descobert (gràcies a la comanda cpufreq-info) que el KLaptop, quan li dius que canviï l’esquema de rendiment, només el canvia per la CPU0 amb la qual cosa, si tens un Core 2 Duo, la CPU1 es manté amb l’esquema per defecte (fregidora) i no hi guanyem gran cosa.

Per sortir del pas, gràcies a l’ajuda d’aquest HOW-TO, he fet un script senzill que em permet seleccionar l’esquema que vull (per defecte “ondemand“) i quan vull. Diu així:

#!/bin/bash

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

case $1 in
performance )
CPU_MIN_FREQ=1826000
CPU_MAX_FREQ=1826000
GOVERNOR=performance
;;

ondemand )
CPU_MIN_FREQ=996000
CPU_MAX_FREQ=1826000
GOVERNOR=ondemand
;;

powersave )
CPU_MIN_FREQ=996000
CPU_MAX_FREQ=1328000
GOVERNOR=powersave
;;

alarm )
CPU_MIN_FREQ=996000
CPU_MAX_FREQ=996000
GOVERNOR=powersave
;;

* )
CPU_MIN_FREQ=996000
CPU_MAX_FREQ=1826000
GOVERNOR=ondemand
;;

esac

# Ajustem la freqüència mínima
echo $CPU_MIN_FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo $CPU_MIN_FREQ > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq

# Ajustem la freqüència màxima
echo $CPU_MAX_FREQ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo $CPU_MAX_FREQ > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq

# Ajustem l’esquema
echo $GOVERNOR > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo $GOVERNOR > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor


Configurar l’escàner

Novembre 29, 2007

A banda de la targeta de xarxa sense fils, l’escàner és l’únic dispositiu que no funcionava així de seques a primeres… Tinc un Epson Stylus DX6000 (multifunció) i he trobat un blog italià que explica com configurar-lo.

llengot:~# aptitude install sane sane-utils xsane
llengot:~# sane-find-scanner
found USB scanner (vendor=0x04b8 [EPSON], product=0x082e [USB2.0 MFP(Hi-Speed)]) at libusb:005:003
# Your USB scanner was (probably) detected. It may or may not be supported by SANE.

Recordem el codi del fabricant i el del producte. Aleshores editem el fitxer de configuració de la marca EPSON al directori del sane.

llengot:~# joe /etc/sane.d/epson.conf

En aquest fitxer hi hauríem de trobar una línia on hi posi només ‘usb’. Hi afegirem els codis que hem copiat…

usb 0x04b8 0x082e

En aquest moment, si executem xsane com a root ja hauria de funcionar correctament. Tanmateix, ens interessarà que el nostre usuari també pugui utilitzar l’escàner… Aleshores creem els següents fitxers:

llengot:~# joe /etc/hotplug/usb/usbscanner.usermap
#contingut (amb els codis d’abans):
usbscanner 0x0003 0×04b8 0×082e 0×0000 0×0000 0×00 0×00 0×00 0×00 0×00 0×00 0×00000000

llengot:~# joe /etc/hotplug/usb/usbscanner
#!/bin/bash
GROUP=users
if [ “${ACTION}” = “add” ] && [ -f “${DEVICE}” ]
then
chmod o-rwx “${DEVICE}”
chgrp “${GROUP}” “${DEVICE}”
chmod g+rw “${DEVICE}”
fi

Et voilà! Ara només em falta entendre això del /etc/hotplug/ i el fitxer .usermap, però almenys l’escàner ja funciona correctament.