Configurar locales y eliminar el aviso "-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)" | Algo de Linux

lunes, 26 de enero de 2015

Configurar locales y eliminar el aviso "-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)"

Al conectarme por ssh a un servidor de terminales con la imagen de Debian Wheezy, he visto que me daba los siguientes avisos:
 -bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)
-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)
Ejecuto el comando locale para ver qué locales tiene configurada la máquina:
# locale
Y compruebo que está definido el locale es_ES pero no lo encuentra. Así que es de suponer que no ha sido generado:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=es_ES.UTF-8
LANGUAGE=
LC_CTYPE="es_ES"
LC_NUMERIC="es_ES"
LC_TIME="es_ES"
LC_COLLATE="es_ES"
LC_MONETARY="es_ES"
LC_MESSAGES="es_ES"
LC_PAPER="es_ES"
LC_NAME="es_ES"
LC_ADDRESS="es_ES"
LC_TELEPHONE="es_ES"
LC_MEASUREMENT="es_ES"
LC_IDENTIFICATION="es_ES"
LC_ALL=es_ES
Para asegurarme, echo un vistazo al fichero /etc/locale.gen y compruebo que ese locale aparece comentado:
# grep '# es_ES ISO-8859-1' /etc/locale.gen
# es_ES ISO-8859-1
La solución consiste en descomentar la línea en el fichero /etc/locale-gen y reconfigurar el paquete "locales".
 Para simplificar el trabajo de establecer el idioma español en los locales, lo he transformado en un script al que he llamado setlocalesES y lo he colocado en todos los servidores de aula mediante puppet. Como podéis comprobar es muy sencillo:
# cat /usr/local/sbin/setlocalesES
#!/bin/bash
#
# setlocalesES
# Script para establecer los locales en español
# Fecha creación: 26/01/2015
# Fecha última modificación: 27/01/2015

sed -i "s/^#\ es_ES/es_ES/g" /etc/locale.gen
echo "locales locales/locales_to_be_generated multiselect es_ES ISO-8859-1, es_ES.UTF-8 UTF-8, es_ES@euro ISO-8859-15" | debconf-set-selections
echo "locales locales/default_environment_locale select es_ES" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
echo "LANG=es_ES.UTF-8
LANGUAGE=es_ES.ISO-8859-15@euro
LC_ALL=es_ES.UTF-8
LC_CTYPE=es_ES.UTF-8
LC_MESSAGES=es_ES.UTF-8
LC_TIME=es_ES.UTF-8
LC_PAPER=es_ES.UTF-8
LC_MEASUREMENT=es_ES.UTF-8
LC_MONETARY=es_ES.UTF-8
LC_NUMERIC=es_ES.UTF-8" > /etc/default/locale
Publicado por primera vez en http://enavas.blogspot.com.es

No hay comentarios: