Sabe-se que o Perl reclama em alta voz ao inicializar quando não consegue localizar os dados de código de idioma compilados em /usr/lib/locale/.../
ou /usr/lib/locale/locale-archive
para o local especificado nas variáveis de ambiente ( LANG
e outros). É facilmente reproduzível assim:
$ LANG=xyz perl /dev/null
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ja_JP.UTF-8",
LC_ADDRESS = "ja_JP.UTF-8",
LC_MONETARY = "ja_JP.UTF-8",
LC_NUMERIC = "ja_JP.UTF-8",
LC_TELEPHONE = "ja_JP.UTF-8",
LC_IDENTIFICATION = "ja_JP.UTF-8",
LC_MEASUREMENT = "ja_JP.UTF-8",
LC_TIME = "ja_JP.UTF-8",
LC_NAME = "ja_JP.UTF-8",
LANG = "xyz"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Portanto, basicamente, você deve verificar as localidades disponíveis no sistema e as configurações de localidade nas variáveis de ambiente quando vir os avisos acima.
Você pode usar locale -a
para ver todas as localidades disponíveis ou localedef
para listar / adicionar / excluir localidades compiladas em locale-archive
.
$ localedef --list-archive
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
locale-gen
é um script específico do Debian para localedef
com o arquivo de configuração /etc/locale.gen
. dpkg-reconfigure locales
updates /etc/locale.gen
, em seguida, apenas chama locale-gen
.
Note que o Ubuntu tem o mesmo comando locale-gen
, mas sua implementação parece bem diferente do Debian. Veja /var/lib/locales/supported.d/
para configuração e dpkg-reconfigure locales
não tem efeito no Ubuntu. Veja também a instrução wiki da comunidade .
As variáveis relacionadas à localidade são definidas em seu ambiente por vários programas de maneira explícita ou implícita. Eles geralmente seriam inicializados por pam_env.so
com /etc/default/locale
ou ~/.pam_environment
no início da sessão. Mais notavelmente, ssh
enviará automaticamente configurações de locale local para sessões de host remoto por padrão no Debian / Ubuntu.
Você pode ver a seguinte linha em /etc/ssh/ssh_config
, que é mencionada na página de manual ssh_config
.
SendEnv LANG LC_*