Como corrigir configurações de localidade no squeeze do Debian

17

Ocasionalmente, recebo erros de localidade e tentei executar o local do dpkg-reconfigure para corrigir o problema. Aqui está a saída:

:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "en_US.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_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Procurei / usr / bin / locale, mas ele não existe no meu sistema. Preciso criá-lo? O que eu coloco lá?

Também encontrei uma pergunta relacionada que diz que a causa do problema estava no arquivo sshd_config. O arquivo tinha a seguinte entrada:

AcceptEnv LANG LC_*

Estou principalmente preocupado que isso possa causar problemas ao meu VPS, caso contrário, se não houver nada grave, ficarei feliz em ignorar o problema. O que devo fazer? obrigado!

blogjunkie
fonte
Esse mesmo problema (LC_CTYPE = UTF-8, que está errado) pode acontecer quando você faz o login através do ssh de um Mac para um Linux, e o seu terminal define automaticamente variáveis ​​de ambiente. Há uma caixa de seleção para isso. Desmarque e pronto. No iTerm está no perfil-> Guia Terminal.
raarts 28/05
Parece haver um bug em alguma distribuição baseada em debian (incluindo o ubuntu). O uso de fr_FR.UTF-8 estava causando problemas (e a localidade existia). Fazer a locale-gen frcriaria todos os locais fr (fr_BE, fr_CH etc ...) resolve o problema. Talvez tentelocale-gen en
Antony Gibbs

Respostas:

10

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 faz o downgrade da libc6 de 2.19 para 2.13, que é o problema. Em seguida, configura as localidades novamente.

tkjef
fonte
Eu tenho exatamente o mesmo problema. Portanto, com esta resposta e incluindo os repositórios jessie, eu poderia instalar localessem fazer o downgrade libc6.
shgnInc
isso não ajudou
aexl 4/12/19
8

Se isso acontecer ao fazer o SSH na sua caixa, mas não no console, tente reconfigurar o seu cliente ssh (na sua máquina local). No Mac OS X, por exemplo, edite / private / etc / ssh_config e comente

# SendEnv LANG LC_*

Obrigado ao cargo de bredman no quadro de avisos do Rasberry Pi .

Adrian Zaugg
fonte
Este arquivo agora: / private / etc / ssh / ssh_config
b4d
7

Eu tive esse problema por um longo tempo e todos os conselhos usuais sobre localidades do dpkg-reconfigure, locale-gen, etc. não ajudaram. Então, eu brinquei um pouco com as variáveis ​​de ambiente, e o que descobri foi que o sistema estava trabalhando na LC_CTYPEvariável de ambiente! UTF-8não é um valor válido para ele. Configurando-o para en_US.UTF-8corrigi-lo.

Para tornar a mudança permanente, eu corri

update-locale LC_CTYPE=en_US.UTF-8

que escreve para /etc/default/locale. E, em seguida, reinicie o sistema para que ele entre em vigor completamente.

Hongli Lai
fonte
Infelizmente, este rendimentosperl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
aexl
2

Eu já vi isso antes em instalações antigas do Debian e, embora irritante, nunca vi causar um problema.

E se

  /usr/bin/locale 

está faltando, tente (como root):

  apt-get install libc-bin

que deve instalar a libc-bin, fornecendo / usr / bin / locale.

Essa linha AcceptEnv no seu sshd_config é bastante padrão e não deve ser a causa do seu problema aqui.

Chad Feller
fonte
A libc-bin já estava instalada, então eu a atualizei e tentei executar dpkg-reconfigure localesnovamente. No joy :(
blogjunkie
/ Usr / bin / locale existe agora? Se sim, qual é o resultado de: locale -ae o que está dentro /etc/default/locale?
precisa saber é o seguinte
O conteúdo do `/ etc / default / locale': # arquivo gerado pelo update-locale LANG = en_US.UTF-8
blogjunkie
locale -adá-me: locale: Não é possível definir LC_CTYPE a localidade padrão: Nenhum tal lima ou diretório C en_us.utf8 POSIX
blogjunkie
O apt alegava que a libc-bin estava instalada, mas pelo menos um arquivo estava ausente (/ usr / bin / locale), e a reinstalação da libc-bin parece ter corrigido isso. Você pode tentar apt-get install --reinstall locales? Então, por uma boa medida, tente locale-gen, que irá regenerar todos os locais que não são comentados /etc/locale.gen(você deve ter uma linha como en_US.UTF-8 UTF-8). Depois disso, veja se locale -afunciona.
precisa saber é o seguinte
2

Fez o seguinte, como Manoj, mas o adicionou ao # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
Hauge
fonte
1

Se você estiver obtendo os erros durante a ssh'ing em um sistema remoto e não quiser modificar o sistema remoto (alterando o sshd_config, por exemplo), faça o seguinte no sistema local (assumindo o bash)

export LC_ALL=en_US
export LANGUAGE=en_US

e depois ssh user@remote

Manoj Thulasidas
fonte
1

Nas minhas novas instalações da Debian (mínimas) localidades estavam completamente ausentes. A instalação ( aptitude install locales) e a execução locale-genfizeram o truque. Então, pessoal, faça o que Chad Feller mencionou, mas verifique se o pacote foi localesinstalado primeiro.

Achim Sperling
fonte
0

Se você desabilitou a autenticação PAM para ssh in /etc/ssh/sshd_config( UsePAM no), a configuração responsável /etc/pam.d/loginnão é eficaz:

session required pam_env.so readenv=1 envfile=/etc/default/locale

O resultado: /etc/default/localeparece não ter efeito.

Então você tem que configurar o seu cliente para enviar o LANG vars ou exportar o env vars nos scripts de perfil, como ~/.profile, ~/bashrcetc.

Mais: http://wiki.debian.org/Locale#Standard

Jan-Philip Loos
fonte
0

Eu estava usando o VPS alemão e não podia alterar a localidade porque não havia nenhum pacote de idioma em inglês instalado.

Após a instalação, eu poderia finalmente mudar o local

aptitude install language-pack-en
valentt
fonte
0

nos sistemas Debian, isso resolverá o seu problema:

apt-get install locales-all

nos sistemas Ubuntu, instale um pacote de idiomas específico, por exemplo:

apt-get install language-pack-en

locale-gen en_US.UTF-8

Geza
fonte
0

Mac se conectando a uma nova instalação do Debian 10. Nenhuma das respostas pesquisadas no Stack Exchange ajudou no Google. Aqui está o que fez (e também foi direto e confiável):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

Execute isso na sua caixa Debian e ele impedirá que o terminal mac de conexão atrapalhe as localidades do servidor ( mais informações ).

Como um bônus, isso pode até melhorar a segurança do servidor.

aexl
fonte