En un nuevo servidor para un cliente necesité generar un locale (configuración regional) faltante. Para ello simplemente se debe recurrir a la herramienta locale-gen
.
Esta herramienta se encarga de generar locales. Estos son utilizados por librerías y programas en sistemas Unix para determinar cómo visualizar correctamente texto, valores monetarios, números, fechas, etc. Un locale es básicamente un directorio que contiene archivos, los cuales especifican el formato que se debe utilizar en cada uno de estos valores (texto, números, fechas, etc.).
Al intentar crear una base de datos Postgres me encontré con el siguiente error:
ERROR: invalid locale name es_ES.iso88591 postgres
Este error indica que el locale "es_ES.iso88591" es desconocido, por ende es necesario generarlo. Muchos sistemas GNU/Linux no incluyen todos los posibles locales, sino sólo aquellos indicados por el usuario durante la instalación del sistema operativo.
Para saber cuales son los locales disponibles, es posible utilizar el siguiente comando:
root@debian:~# locale -a C C.UTF-8 en_US.utf8 POSIX
Se observa que el locale "es_ES.iso88591" no está disponible. Para generar un nuevo locale se debe utilizar la herramienta locale-gen
. Editar el archivo de configuración /etc/locale.gen
. Dentro del mismo se encuentran configurados todos los locales disponibles.
root@debian:~# nano /etc/locale.gen
En Debian y derivados, este archivo incluye todos los posibles locales admitidos, los cuales se encuentran comentados (mediante un #
al comienzo de la línea). Para habilitar un nuevo locale, basta con descomentar la línea. En otras distribuciones tal vez sea necesario directamente agregar la línea, la cual está conformada por un nombre de locale y una codificación (encoding o conjunto de caracteres) separados por un espacio en blanco.
Luego de descomentar o agregar nuevas líneas, el sistema queda configurado con los siguientes locales:
root@debian:~# grep -v "^#" /etc/locale.gen en_US.UTF-8 UTF-8 es_AR ISO-8859-1 es_AR.UTF-8 UTF-8 es_ES ISO-8859-1 es_ES.UTF-8 UTF-8
Sólo resta generarlos, para ello ejecutar locale-gen
:
root@debian:~# locale-gen Generating locales (this might take a while)... en_US.UTF-8... done es_AR.ISO-8859-1... done es_AR.UTF-8... done es_ES.ISO-8859-1... done es_ES.UTF-8... done Generation complete.
Ahora locale -a
reporta los nuevos locales soportados:
root@debian:~# locale -a C C.UTF-8 en_US.utf8 es_AR es_AR.iso88591 es_AR.utf8 es_ES es_ES.iso88591 es_ES.utf8 POSIX spanish
Referencias