localidade não encontrada / configuração locale falhou - o que devo fazer?

32

Instalei o Debian 7 i386 no meu VPS (OpenVZ). Tudo funciona bem, exceto locais - qualquer tentativa de instalar qualquer coisa mostra:

[...]
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "pl_PL.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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
[...]

O que eu tentei:

  1. Eu mesmo gerando localidades - update-locale LC_ALL="pl_PL.UTF-8"- shows: http://www.wklej.org/id/1248438/
  2. apt-get install --reinstall locales http://www.wklej.org/id/1248442/
  3. O mesmo com o dpkg-reconfigure localesajuste + pl_PL.UTF-8, pl_PL.ISO-8859-2ou mesmo en_US: http://www.wklej.org/id/1248446/
  4. export LC_ALL=pl_PL.UTF-8 (mesmo na raiz):

    -bash: warning: setlocale: LC_ALL: cannot change locale (pl_PL.UTF-8)
    

Aqui está o que mostra a localidade:

root:~# locale
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=pl_PL.UTF-8
LANGUAGE=
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

Nada interessante encontrado em / var / log. Mesmo mudar o repositório para locales oficiais de limpeza + e instalação manual não resolve o meu problema, que se manifesta a cada nova instalação do Debian 7.

luke_g
fonte

Respostas:

22

Parece que nenhum código de idioma é gerado. Você selecionou pl_PL.UTF-8corretamente dpkg-reconfigure localespressionando spacea linha correspondente?

Se sim, a linha

pl_PL.UTF-8 UTF-8

in /etc/locale.gennão é comentado (= não começa com #). Se você precisar corrigir isso, também precisará executar locale-genpara gerar os códigos de idioma. Sua saída deve ser:

Generating locales (this might take a while)...
   pl_PL.UTF-8... done
Generation complete.

Se ele não gerar os códigos de idioma que você deseja gerar, parece haver algo errado com seu sistema. Um motivo pode ser que você localepurgeinstalou. Se não houver arquivos /usr/share/locale/pl/LC_MESSAGESou /usr/share/locale/pl_PL/LC_MESSAGESeste é o caso, ou seu sistema está com problemas.

jofel
fonte
1
Funciona! A posição selecionada em /etc/locale.gen ainda foi comentada, não sei por quê (sim, lembro-me da barra de espaço) - talvez algo esteja errado com o CHMOD. Obrigado!
luke_g
1
Observe que esse -plowé o padrão, portanto, pode ser omitido. Você só precisa ligar dpkg-reconfigure, que chamará a locale-gen depois de marcar a entrada desejada.
Stéphane Chazelas
@StephaneChazelas obrigado, removi-o da resposta e esclareci o uso de locale-gen.
jofel
Outra possibilidade é se você configurou seu sistema etc para en_US, mas seu /etc/locale.gen foi apenas descomentado en_GB. Percebi esse erro neste tópico aqui unix.stackexchange.com/q/287716/16920 Por favor, adicione-o à estratégia de solução de problemas também.
Léo Léopold Hertz,
12

primeiro:

sudo apt-get purge locales

então:

sudo aptitude install locales

e os famosos:

sudo dpkg-reconfigure locales

Isso libera o sistema de códigos de idioma e, em seguida, reinstala os códigos de idioma e diminui a libc6 de 2.19 para 2.13, que é o problema. Em seguida, configura as localidades novamente.

tkjef
fonte
Parece ajudar, mas o próximo apt-get dist-upgradeirá quebrá-lo novamente.
ceving 28/09/14
Por que isso iria quebrar? Nesse ponto, os locais não devem ser compatíveis com a libc6 em uso? Minha libc6 foi alterada para usar outro programa. Fiz o downgrade para a versão libc6 padrão para que meu sistema funcione corretamente. Em que ponto ele deve ser muito compatível com um apt-get dist-upgrade
tkjef
1
Um apt-get install localesinstalou os códigos de idioma no meu contêiner debian do Docker.
Stephane
7

A maneira rápida e fácil (embora signifique mais disco usado que outros):

apt install locales-all
Yajo
fonte
1

tente correr

locale -a

se você tiver

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

A solução para esta situação é instalar as localidades do pacote (do glibc package [1]) no debian flavor ou no glibc-all-langpacks CentOS / Fedora

[1] https://tracker.debian.org/pkg/glibc

Sérgio
fonte
glibc-localepacote não existe no Debian
Yajo 23/05
deve ser a localidade do pacote ... corrigida
Sérgio