locales rebeldes

Pues he tenido un problema de locales rebeldes que no se cambiaban, así que hemos tenido que repasar un poquito este tema :P

El problema estaba que al crear una maquina virtual openvz con debian 6.0 los locales no se generaron correctamente y ponía que eran POSIX pero las requería en UTF-8 ya que todos los sistemas que tengo trabajan en esta codificación.

La forma elegante de hacerlo es mediante dpkg-reconfigure locales

# dpkg-reconfigure locales

Y le indicamos la locale deseada.

Aún así a mi no me estaba haciendo caso, ni siquiera reiniciando la maquina, así que he probado con otra forma un poco mas bruta:

# vi /etc/locale.gen
en_US.UTF-8 UTF-8

La línea estaba comentada, reinicio y el mismo problema, las locale POSIX

root@v-www-conway:/etc# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

En /etc/default/locale

# vi /etc/default/locale
LANG=en_US.UTF-8

Así que hemos tirado por mas fuerza bruta aún, he añadido esta línea al final de /etc/profile

# vi /etc/profile
: ${LANG:=en_US.UTF-8}; export LANG

y luego si ha funcionado. El : no lo conocía, y supongo que es el equivalente a export.

root@v-www-conway:/etc# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Pues hasta aquí el tip of the day ;)

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.