Publi

perl: warning: Setting locale failed. [ Debian y basadas en ella: Ubuntu, Mint…]

(Project 365 Day 356)

El problema

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = “es_ES.UTF-8”,
LC_ADDRESS = “es_ES.UTF-8”,
LC_MONETARY = “es_ES.UTF-8”,
LC_NUMERIC = “es_ES.UTF-8”,
LC_TELEPHONE = “es_ES.UTF-8”,
LC_IDENTIFICATION = “es_ES.UTF-8”,
LC_MEASUREMENT = “es_ES.UTF-8”,
LC_TIME = “es_ES.UTF-8”,
LC_NAME = “es_ES.UTF-8”,
LANG = “en_US.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).

Seguro que lo has visto alguna vez, sobre todo si accedes por SSH a un servidor de otro país. El caso es que en el sistema que hemos accedido no están las locales del cliente (el ordenador con el que accedemos) instaladas.

Es decir, le estamos diciendo que queremos acceder con español (España) a un sistema que no sabe lo que es el español (España).

Ni que decir tiene, que esto pasa cuando intentamos ejecutar algún script perl (algo mucho más común de lo que creemos).

Solución

Las posibles soluciones pueden ser:

Acceder con una locale que el servidor entienda

En este caso, el servidor entiende el inglés de EEUU, por lo tanto podemos hacer (siempre y cuando nuestro ordenador tenga instalado el inglés de EEUU):

$ LC_ALL=en_US.UTF-8 ssh usuario@servidor

De esta forma, como tanto el cliente como el servidor hablan el mismo idioma y no hay problema.

Instalar las locales en el servidor

Necesitamos permisos de root. En los ejemplos, usaré sudo, pero también puedes entrar como root y ejecutar los comandos sin sudo. Pero bueno, la primera opción es entrar en la terminal,
y hacer:

$ sudo locale-gen es_ES.UTF-8

En algunas distribuciones se puede crear un archivo llamado /etc/locale.gen y escribir ahí las locales que queremos cargar en el sistema de la siguiente forma:

en_US ISO-8859-1
en_US.UTF-8 UTF-8
es_ES ISO-8859-1
es_ES@euro ISO-8859-15

y luego ejecutar:

$ sudo locale-gen

o, en algún derivado de Debian:

$ sudo dpkg-reconfigure locales

Foto: Kenneth Lu (Flickr CC)

Leave a Reply