Questão Como corrijo meu problema de localidade?


Estou recebendo essa mensagem toda vez que faço algo como iniciar ou interromper um serviço.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.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_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
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   

Como corrijo esse erro?


463
2017-07-11 14:08


origem


Relacionado: Como definir localidade? - Lucio
possível duplicata de Variáveis ​​de localidade não têm efeito no shell remoto (perl: warning: Falha na configuração de localidade). - Denilson Sá Maia
Correção fácil e permanente para todos os usuários: askubuntu.com/questions/881742/… - Galvani


Respostas:


Primeira corrida locale para listar as localidades atualmente definidas para a conta de usuário atual:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Em seguida, gere o local ausente e reconfigure os locais para observar:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Agora você não verá mais nenhum erro!


471
2017-12-10 12:45



não funcionou para mim - Umair
Isso funcionou para mim em vários sistemas. Existe uma maneira de evitar esse problema em sistemas recém-instalados? - Brylie Christopher Oxley
@UmairAyub pode ser que você tenha mais de um local desconhecido, tente isto: para y em $ (locale | cut -d '=' -f 2 | ordenação | uniq), do locale-gen $ y; feito Ele irá gerar uma localidade para cada definição que você tem - Ivan Buttinoni
A localidade no locale-gen O comando deve estar entre aspas duplas para que isso funcione corretamente: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@Umair Existe um alto risco de erro humano neste problema. Seu sistema está configurado para en_GB por padrão, mas você configura para en_US. Você tem que comentar manualmente en_GB e descomentar en_US dentro /etc/locale.gen. Veja minha resposta askubuntu.com/a/790373/25388 no hardware Raspberry Pi 3b e no sistema Raspbian Jessie. - Léo Léopold Hertz 준영


Nada sugerido acima funcionou no meu caso (Ubuntu Server 12.04LTS). O que finalmente ajudou estava colocando no arquivo /etc/environment:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

Por algum motivo, estava faltando. As saídas para o código de idioma e outros comandos apareciam como se as variáveis ​​estivessem adequadamente definidas. Em outras palavras, não tome como certo que todas as coisas básicas são declaradas onde devem ser declaradas.


340
2017-12-16 04:11



Sim, nenhum outro funcionou, exceto este, talvez devido à versão atualizada. Mas eu prefiro colocar isso em /etc/default/locale. - Naveed
Atualizada /etc/default/locale e sem mais avisos. obrigado - ohho
Sim, os outros não funcionaram para mim. Este fez. Aqui está o one-liner que eu usei para atualização autônoma disso. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 sua solução está incorreta porque ela anexa (em vez de sobrescrever), não é o arquivo recomendado, e echo precisa ser executado com a interpretação das saídas de barra invertida habilitadas. Este é o mesmo que o seu, mas com o supracitado fixo: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
NÃO ESQUEÇA DE LOGPUT E RE-LOGIN! - S.M.Mousavi


Eles devem desaparecer após a emissão:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure reconfigura pacotes depois de já terem sido        instalado. Passe os nomes de um pacote ou pacotes para reconfigurar.        Ele fará perguntas de configuração, bem como quando o pacote foi        primeiro instalado.


140
2017-07-11 14:19



Estou feliz que meus problemas um ano atrás ajudaram você a consertar isso;) - Rinzwind
Essa localidade não deveria ser gerada por padrão? Quero dizer en, en_AU, en_CA, en_GB estão presentes por padrão, mas não en_US? - Daniel Serodio
@Rinzwind Muito obrigado pelo seu esforço! Eu peço desculpas; Eu deveria ter formulado melhor a minha pergunta. O que eu quis perguntar é: Por que é necessário reconfigurar o pacote de locales depois de gerar novos locais? Parece-me que os locais funcionam mesmo sem dpkg-reconfigure. - Victor
Usando o Ubuntu 14.04, em um contêiner do Docker, nada estava sendo definido. Django makemessage precisa disso. Isso funcionou perfeitamente! obrigado. - Justin
Eu acredito que o sudo está desaparecido. Talvez devesse ser: sudo dpkg-reconfigure locales. Isso funcionou para mim depois de uma nova instalação do Ubunty 14.10 Desktop 64-bit. - bgoodr


Basta adicionar o seguinte ao seu .bashrc arquivo (supondo que você esteja usando o bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Esta doce correção funcionou para mim na minha imagem Amazon-EC2 (estava executando seu padrão RHEL AMI) Muito obrigado! :) - gideon
Este trabalhou para mim com a imagem Ubuntu 12.04 do meu digitalocean. - Inan Berbatov
isso consertou meu problema. Eu tenho que fazer uma pergunta: como é que o LC_ALL não foi definido pelo comando locale-gen como outras respostas acima? - alexserver
Estranho, toda a solução acima não funcionou para mim, mas este fez! Depois de exportar LC_ALL Eu poderia finalmente usar sudo dpkg-reconfigure locales. - sobi3ch
finalmente depois de tentar muitos truques, este é o trabalho para mim no kubuntu 14.04.3 lts. obrigado! - Jonas


Esse é um problema comum se você estiver se conectando remotamente, portanto, a solução é não encaminhar sua localidade. Editar /etc/ssh/ssh_config e comente SendEnv LANG LC_* linha.


88
2017-10-01 00:45



Eu estava tentando outras respostas, mas esqueci que estava me conectando remotamente até ver sua resposta. Locais diferentes no servidor e no cliente ssh estavam causando o problema. - Hieu
No OSX (conectando ao Ubuntu) está em /etc/ssh_config - Michiel de Mare
One-liner para fazer isso: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (útil para provisionamento de servidor) - Albin
Não consegui configurar LC_ALL na máquina local, mas consertei meu problema com o servidor remoto, obrigado. - Alexander Shlenchack
Provavelmente vale a pena notar que você tem que editar o arquivo na máquina local e não no controle remoto. - Clashsoft


Existe um comando para isso:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Atualiza /etc/default/locale com os valores fornecidos.


63
2017-08-01 11:51



Isso é legal! Não se esqueça de sair / recarregar seu shell, senão você não verá as alterações. Não se esqueça de verificar a resposta aprovada para gerar e reconfigurar as localidades. - Erik Zivkovic
Corrida locale ainda não mostra nenhum valor utf. - Cerin
@Cerin: Myybe, uma chamada para locale-gen está desaparecido. Antes, tem que se fazer apt-get install locales. - koppor
Isso não mudará o LANG para o shell de root no Ubuntu 16.04, já que ele está sobrescrito em /root/.profile. - Willem


O que funcionou para mim no 12.10 foi este:

apt-get install language-pack-en-base  

Isso foi depois dpkg-reconfigure locales não produziu resultados.


30
2018-04-28 02:01



Esta é a melhor resposta. Não é que meus locais foram configurados incorretamente, mas eles não existiam. Eu acho que isso é semelhante ao problema do OP também ("Nenhum arquivo ou diretório" é bem claro se sua região é set certo!). - Breakthrough
Eu estava recebendo o problema OPs sempre que eu estava usando o apt-get no Ubuntu 12.04 Isso resolveu perfeitamente sem ter que editar os arquivos. - Deepend
"language-pack-en-base já é a versão mais recente." - karlingen
Logout e Login podem ajudar - S.M.Mousavi
Trabalhei para mim em um ubuntu chroot sob debian. Obrigado :) - Wyatt8740


Não se esqueça de sair da sua sessão SSH (ou do seu X11) saindo e voltando a entrar. Todas essas sugestões não funcionaram para mim, a menos que eu fiz login novamente ...


16
2017-09-26 06:51



Este comentário deve obter mais votos positivos ou, pelo menos, o fato precisa ser destacado em todas as respostas. - ni8mr