Como corrijo meu problema de localidade?

469

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?

    
por HackToHell 11.07.2012 / 16:08

19 respostas

478

Primeiro, execute 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!

    
por Otto Kekäläinen 10.12.2012 / 13:45
344

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.

    
por Marcin 16.12.2012 / 05:11
142

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.

    
por Rinzwind 11.07.2012 / 16:19
110

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

export LC_ALL="en_US.UTF-8"
    
por ratz 08.11.2012 / 10:42
88

Este é um problema comum se você está se conectando remotamente, então a solução é não encaminhar sua localidade. Edite /etc/ssh/ssh_config e comente SendEnv LANG LC_* line.

    
por user249697 01.10.2014 / 02:45
64

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.

    
por sgtpep 01.08.2014 / 13:51
30

O que funcionou para mim no dia 12.10 foi este:

apt-get install language-pack-en-base  

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

    
por George Answerology 28.04.2013 / 04:01
16

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

    
por Michael R. Hines 26.09.2014 / 08:51
11

Para o Ubuntu 12.10, nenhum dos itens acima funcionou, exceto pela solução do ratzs. Eu recomendo adicionar isso ao seu arquivo /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
por Lovemore Nalube 27.03.2013 / 04:19
11

Eu estava preso em um estado estranho em que minha máquina local estava configurada como es e, portanto, a máquina remota (via vagrant ) tinha sido provisionada em um estado não manipulado. Portanto, eu tive que usar o manual export= apenas para facilitar um dpkg-reconfigure bem-sucedido. Então o sistema está bem.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
por charneykaye 22.03.2016 / 19:02
9

Eu escrevi um script bash para corrigir As respostas acima são úteis, mas definir as variáveis de localidade simplesmente exportando os valores na variável shell funcionará apenas para uma sessão. Resolvi permanentemente esse problema exportando as variáveis de localidade no arquivo .bash_profile. Você também pode usar o arquivo /etc/profile em vez de .bash_profile .

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

Não se esqueça de source the .bash_profile e siga a script na configuração fácil.

    
por Ajeet Khan 27.02.2016 / 20:26
8

Você pode tentar:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

onde ru_RU é o código do seu país.

    
por Koss 17.06.2013 / 15:34
6

Como dito aqui no Debian Wiki , você pode editar /etc/locale.gen e adicionar todas as localidades (ou descomente-as, Eu tinha uma lista de todos os locais, mas todos, exceto o que eu usei como comentários, você deseja ter suporte em seu sistema. Então, execute

sudo dpkg-reconfigure locales

para atualizar as localidades em seu sistema. Agora, todas as localidades que você adicionou / descomentou em /etc/locale.gen estão disponíveis em seu sistema sem nenhum aviso.

    
por msrd0 14.12.2014 / 12:28
6

A resposta aceita atualmente não é suficiente na estratégia de solução de problemas porque você pode ter um erro humano. Você configurou seu sistema para en_US , mas tem en_GB ativado em /etc/locale.gen , como eu tive no tópico aqui para Raspberry Pi 3b. Você deve ter all suas localidades usadas ativadas em /etc/locale.gen .

Eu tinha o en_GB.UTF-8 UTF-8 ativado apenas em /etc/locale.gen . Eu deveria ter lá apenas habilitado en_US.UTF-8 UTF-8 por causa de outros comandos executados para isso. Então, eu comentei GB e uncommented EUA, e tudo funciona agora

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Agora, não obtenho esses erros de localidade com nenhum comando.

Sistema: Jessie Raspbian
Ferragens: Raspberry Pi 3b

    
por Léo Léopold Hertz 준영 22.06.2016 / 22:25
3

Se você usa o ambiente do KDE, verifique o arquivo setlocale.sh em ~/.kde/env/ :

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
por MaximKostrikin 05.02.2014 / 09:36
2
  1. Pode ser necessário executar sudo dpkg-reconfigure também para o aplicativo que você instalou, enquanto as configurações de "localidade" foram inválidas / não correspondentes.

    Enquanto a localidade do sistema estava incorretamente configurada, instalei vim . Mais tarde, quando a localidade do sistema foi corrigida, vi uma situação em que vim estava exibindo caracteres utf-8 incorretamente como símbolos estranhos, enquanto nano e less os mostravam corretamente. Correndo

    sudo dpkg-reconfigure vim
    

    pareceu corrigir o problema depois que as configurações do sistema foram corrigidas.

  2. Eu também notei o mesmo que já mencionei: Você pode precisar desconectar / reconectar o SSH para tornar as alterações visíveis.

por ajaaskel 18.12.2014 / 20:02
2

Adicionando o seguinte texto a ~/.profile funciona para mim:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Estou usando o servidor Ubuntu 16.04 LTS de 64 bits no Linode.

    
por Jingguo Yao 09.05.2017 / 05:07
1

Isso funcionou para mim quando tive o mesmo problema (com base na solução fornecido pelo dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
por pythonhunter 27.08.2014 / 07:21
1

Eu estava tendo problemas para executar o tema 'Agnoster' com oh-my-zsh na minha estação de trabalho docker ized com mensagens de erro semelhantes. (É mais rápido que wsl IMO e eu posso montar o docker.sock nesse contêiner via Hyper-V VM gerenciado por Docker For Windows , o que me permite fazer coisas de janela de encaixe)

Combinar algumas das sugestões das respostas ajudou a corrigir isso para mim.

Adicionei isso ao meu Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Aqui está uma essência se você quiser experimentar.

    
por sdkks 30.06.2018 / 16:25