HowTo:gentoo:utf8
De Luispa
Configuración en Español o Inglés y UTF-8
Introducción
Uno de mis objetivos principales, desde hace años, ha sido poder utilizar el sistema perfectamente parametrizado de modo que: 1) me funcionen el teclado en Español y se puedan usar los caracteres especiales (áéíóúñÑçÇ), 2) que dichos especiales se guarden y se reconozcan siempre en formato UTF-8 de doble byte a lo largo de todo el sistema operativo, programas y sistema de ficheros, 3) poder utilizar los programas bien en Español (los traducidos) o bien en Inglés, 4) poder intercambiar mis directorios, ficheros y contenidos con otros Sistemas Operativos sin ningún problema (si soportan UTF-8) y 5) que todo esto funcione tanto en la consola de texto como en el entorno Xorg, gestores de ventanas, programas de texto, programas gráficos, en definitiva, en cualquier entorno.
Tengo que reconocer que no ha sido fácil, desde luego no tan fácil como seleccionar un idioma, teclado, región en otros sistemas operativos como Windows o MacOSX, de hecho, la sencillez de MaxOSX y su soporte nativo de UTF-8 siempre me ha parecido muy bueno.
Con la instalación de este equipo lo he vuelto a intentar y por fín veo que se puede hacer, ahora ya no es complicado, GNU/Linux en general ha evolucionado, y digo en general porque todavía queda alguna aplicación "no" compatible con utf-8. Hoy en día mucha gente usa UTF-8 diariamente en:
* ficheros de texto (código fuente, html, mensajes de correo, etc.) * nombres de directorios y ficheros * standard input, standard output, pipes * variables de entorno * buffers de copiar/pegar * cientos de programas como telnet, ssh, emacs, ...
Describo las modificaciones que he realizado y en mi entorno que uso la consola, Gnome, gnome-terminal como shell y emacs como editor, me funciona perfectamente. Si se usan otros programas entonces hay que verificar si son compatibles con UTF-8. Al final documento una prueba de concepto a realizar.
Sistema Operativo
- Configuración del Kernel
| Configuración del kernel de Linux: File Systems |
File Systems Native language support (utf8) Default NLS Option : -*- NLS UTF-8 |
- Fichero locale.gen y generación de los locales
en_US ISO-8859-1 en_US.UTF-8 UTF-8 es_ES ISO-8859-1 es_ES@euro ISO-8859-15 es_ES.UTF-8 UTF-8 # Soporte de Inglés y Español en_US.UTF-8@euro UTF-8 es_ES.UTF-8@euro UTF-8
Genero los locales:
# locale-gen * Generating 7 locales (this might take a while) with 1 jobs * (1/7) Generating en_US.ISO-8859-1 ... [ ok ] * (2/7) Generating en_US.UTF-8 ... [ ok ] * (3/7) Generating es_ES.ISO-8859-1 ... [ ok ] * (4/7) Generating es_ES.ISO-8859-15@euro ... [ ok ] * (5/7) Generating es_ES.UTF-8 ... [ ok ] * (6/7) Generating en_US.UTF-8.UTF-8@euro ... [ ok ] * (7/7) Generating es_ES.UTF-8.UTF-8@euro ... [ ok ] * Generation complete
- Zona horaria, en mi caso en la península
cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime
- Fichero rc.conf
UNICODE="yes" CONSOLEFONT="lat9w-16"
- Fichero 02locale
LC_ALL="es_ES.UTF-8" LC_COLLATE="es_ES.UTF-8" LC_CTYPE="es_ES.UTF-8" LC_MESSAGES="es_ES.UTF-8" LC_MONETARY="es_ES.UTF-8" LC_NUMERIC="es_ES.UTF-8" LC_PAPER="es_ES.UTF-8" LANG="es_ES.UTF-8"
LC_ALL="es_ES.UTF-8" LC_COLLATE="C" LC_CTYPE="es_ES.UTF-8" LC_MESSAGES="en_US.UTF-8@euro" LC_MONETARY="es_ES.UTF-8" LC_NUMERIC="es_ES.UTF-8" LC_PAPER="es_ES.UTF-8" LANG="es_ES.UTF-8"
- Fichero consolefont
CONSOLEFONT="lat9w-16"
- Fichero keymaps
KEYMAP="-u es" SET_WINDOWKEYS="yes" EXTENDED_KEYMAPS="backspace euro2" DUMPKEYS_CHARSET=""
- La zona horaria y el reloj
CLOCK="local" TIMEZONE="Europe/Madrid" CLOCK_OPTS="" CLOCK_SYSTOHC="yes"
- El editor emacs. Para conseguir completar esta situación necesitaba un editor con soporte completo de UTF-8, para poder entender bien los caracteres especiales en el contenido de los ficheros e incluso cuando es invocado desde la shell, por ejemplo "emacs -nw Fichero\ con\ Eñe.txt".
- El servidor rsync
# Soporte utf-8, en la parte global del fichero : charset = utf-8 :
NOTA: Si sincronizas desde un cliente MacOSX con rsync contra un servidor Linux, debes usar la opción --iconv=UTF8-MAC,UTF8
Firefox
- Al recibir páginas que indican cómo están codificadas las mostrará correctamente. Ahora bien, cuando reciba una página que NO indica cómo está codificada y ésta se encuentra en formato UTF-8 la mostrará incorrectamnete, dado que Firefox usará por defecto ISO-8859-1. Para cambiarlo:
Preferencias->Contenido->Tipo de letra->Avanzadas-> Cofif. caracteres predet. UTF-8
Prueba de Concepto
Una vez que tienes todo configurado en modo UTF-8 entonces nos encontramos ante una situación donde los caracteres especiales como la áéíóúñÑçÇ funcionan perfectamente, en todos sitios, en la shell, en el explorador de gnome y kde, en los nombres de los directorios y los ficheros, incluso en sus contenidos.
Esta es una buena forma de comprobar que todo va bien:
1) Desde Gnome abro gnome-terminal, edito un fichero nuevo, le añado contenido y lo salvo. $ emacs -nw Prueba-áéíóúñÑçÇ.txt Esto es una prueba: ésta línea empieza por é la siguiente empieza por á áéíóúñÑçÇ
2) Verifico que se ve bien desde la shell, el autocompletar funciona y muestra bien el contenido $ cat Prueba-áéíóúñÑçÇ.txt Esto es una prueba: ésta línea empieza por é la siguiente empieza por á áéíóúñÑçÇ
3) Verifico que el comando "ls" también lo muestra correctamente $ ls -al Prueba-áéíóúñÑçÇ.txt -rw-r--r-- 1 luis luis 39 abr 9 21:28 Prueba-áéíóúñÑçÇ.txt
4) Compruebo que otros comandos "ven" y "actúan" bien sobre el contenido $ sort Prueba-áéíóúñÑçÇ.txt áéíóúñÑçÇ ésta línea empieza por é Esto es una prueba: la siguiente empieza por á
5) Ahora me cambio a la "consola" de texto (CTRL-ALT-F1), modifico el fichero, le añado más contenido, verifico que se ve bien.
6) Vuelvo al entorno gráfico (ALT-F7) y compruebo que es compatible y lo veo todo bien $ cat Prueba-áéíóúñÑçÇ.txt Esto es una prueba: ésta línea empieza por é la siguiente empieza por á áéíóúñÑçÇ Línea añadida desde la consola: áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ fín!
7) Envío, copio, transfiero por diversos métodos este fichero y otros creados en otros Sistemas Operativos hacia ellos o desde ellos usando: rsync, nfs, samba, afp, ... y verifico que todo funciona: - Directorios con nombres caracteres especiales - Ficheros con nombres con caracteres especiales - Contenidos con caracteres especiales
Red Local
- En el equipo Linux creo una serie de Directorios y Ficheros
bolica ~ $ mkdir prueba bolica ~ $ mkdir prueba/áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ bolica ~ $ mkdir prueba/Transmisión bolica ~ $ cp Prueba-áéíóúñÑçÇ.txt prueba/áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ/ bolica ~ $ cp Prueba-áéíóúñÑçÇ.txt prueba/Transmisión/segundo\ fichero.txt
- Desde un MacOSX pruebo con rsync
mac:~ luis$ rsync -T /tmp/ -uan --iconv=UTF8-MAC,UTF8 --progress --password-file=/Users/luis/.rsync.secret luis@bolica.parchis.org::luis/priv /Users/luis
:
priv/prueba/
priv/prueba/Transmisión/
priv/prueba/Transmisión/segundo fichero.txt
187 100% 0.16kB/s 0:00:01 (xfer#42, to-check=1026/34878)
priv/prueba/áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ/
priv/prueba/áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ/Prueba-áéíóúñÑçÇ.txt
187 100% 0.16kB/s 0:00:01 (xfer#43, to-check=1025/34878)
- Verifico que lo he recibido correctamente en el mac
(mac) $ ls -al $HOME/priv/prueba mac:~ luis$ ls -alR priv/prueba/ total 0 drwxr-xr-x 4 luis staff 136 9 abr 21:41 . drwx------ 16 luis staff 544 10 abr 08:40 .. drwxr-xr-x 3 luis staff 102 10 abr 08:35 Transmisión drwxr-xr-x 3 luis staff 102 9 abr 21:41 áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ priv/prueba//Transmisión: total 8 drwxr-xr-x 3 luis staff 102 10 abr 08:35 . drwxr-xr-x 4 luis staff 136 9 abr 21:41 .. -rw-r--r-- 1 luis wheel 187 10 abr 08:35 segundo fichero.txt priv/prueba//áéíóúñÑçÇÁÉÍÓÚàèìòùÀÈÌÒÙ: total 8 drwxr-xr-x 3 luis staff 102 9 abr 21:41 . drwxr-xr-x 4 luis staff 136 9 abr 21:41 .. -rw-r--r-- 1 luis wheel 187 9 abr 21:41 Prueba-áéíóúñÑçÇ.txt
Renombrar ficheros/directorios
- Un comando muy útil es convmv. Se instala con "emerge -v convmv"
- Ejemplo:
$ convmv --notest -r -f iso-8859-1 -t utf8 <directorio>
¿Qué no me va?
- Repito las pruebas accediendo por SAMBA y AFP con resultaos satisfactorios. Las pruebas realizadas con SCP (ssh) y NFS no son satisfactorias, el envío desde el Mac hacia el linux crea los nombres incorrectos, mientras que la recepción lanzada desde el mac de lo mismo trayendolo desde Linux funciona correctamente.
Volver a HowTo Servidor Gentoo Linux
--Luis 20:58 9 abr 2009 (CEST)

