O que causa o problema de locales no debian?

1

Minha pergunta não é sobre como corrigi-lo, mas sobre o que causa o aviso perl no debian depois de fazer apt-get install . Eu descobri que a maneira mais fácil de corrigir esse problema é:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen
dpkg-reconfigure locales

Depois de fazer isso, apt-get install --reinstall não está mais avisando sobre a localização do local.

O que eu quero saber é o que está causando esse problema? Eu acontece depois de nova instalação. Eu estou fazendo muita instalação na caixa virtual para fins de teste. E cada instalação tem esse problema. E o problema está de volta após a reinicialização? Isso acontece no Ubuntu também.

Então, alguém pode me dizer o que está causando problema de localidade?

    
por Mas Bagol 12.07.2015 / 14:14

1 resposta

1

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_*
    
por 12.07.2015 / 18:58

Tags