CentOS 6 e erro de localidade

16

Acabei de instalar o CentOS 6 e sempre que faço login no sistema via SSH remotamente, recebo o seguinte erro:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Quando digito "locale" na linha de comando, obtenho a seguinte saída:

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
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Qual pode ser o problema? Como posso resolver este problema?

Cem
fonte
sua solução de comentar a SendEnv LANG LC_ * arg trabalhou para mim em Mac OS X 10.7.5

Respostas:

10

No servidor do qual você ssh, você tem um código de idioma definido por meio de uma variável de ambiente? Ao examinar minha instalação do CentOS 6, o único local que eu posso encontrar suportado é identificado como en_US.utf8(descoberto usando o locale -acomando). Esse poderia ser o problema?

Nos meus testes, quando defino a LC_ALLvariável de ambiente como en_US.UTF-8, ssh'd para o servidor, a saída do meu comando locale foi definida POSIXno meu caso. É o mesmo de quando NÃO defini (ou seja, desmarcou) a LC_ALLvariável antes de ssh'ing.

Quando defino minha LC_ALLvariável como en_US.utf8ou en_US.utf-8, ssh'd para minha caixa do CentOS 6, a saída do código do idioma era a mesma que foi definida na caixa de origem.

Observe que eu também não usei tampas para UTF.

mdpc
fonte
11
A propósito, notei que isso estava ocorrendo nas minhas configurações ssh do Mac OS X Lion. Editei o arquivo / etc / ssh_config e comentei o SendEnv LANG LC_ *. Isso resolveu meu problema.
Cem
@ Obrigado Obrigado pela dica, isso realmente corrige no Mac OS X Lion.
Zsolt Török
17

Resolvido isso, desabilitando "Definir variáveis ​​de ambiente de localidade na inicialização" em Terminal Settings> Advanced conforme esta captura de tela.

insira a descrição da imagem aqui

NOTA: Se você usar o iTerm2, poderá desativar a opção "Definir variáveis ​​de localidade automaticamente" em Preferências> Perfis> Terminal

Nils
fonte
11
Isso funcionou para mim. Especificamente, o Terminal.app estava configurando "LC_CTYPE = UTF-8", o que causou os erros relatados pelo OP. Como alternativa, unset LC_CTYPEou export LC_CTYPE=en_US.UTF-8corrija o problema após o login.
atrasado
Isso resolveu para mim, thx
pjvds
11

Maneira simples:

Adicionar

 LC_CTYPE="en_US.UTF-8"

para /etc/sysconfig/i18n.

gpupo
fonte
Funciona para mim, depois de tantas tentativas.
Tommy
2

O que funcionou para mim foi adicionar um link simbólico no servidor CentOS assim:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

Depois de fazer isso, comandos como este funcionam:

export LC_CTYPE=UTF-8

Caso contrário, este último comando falhará com este erro:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

Agora, uma solução ainda mais simples é adicionar esta linha ao / etc / bashrc no servidor:

export LC_CTYPE="en_US.utf8"
gnrfan
fonte
Obrigado pela contribuição! isso funcionou muito bem. Finalmente capaz de remover o comentário chato ...
cristobal
2

Recebi essa mensagem específica ao fazer o login de um Solaris X em um host Centos.

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

O problema está vindo de 2 configurações:

  1. No meu sistema padrão ssh_config, peço ao sistema que passe essas variáveis.

Enviar variáveis ​​de ambiente relacionadas ao código do idioma SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. No meu host de origem, essas configurações foram definidas da seguinte maneira:

    FONTE # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 LC_ALL

Mas, como você pode ver, o LC_MESSAGES está definido como fr.UTF-8, que não é uma opção no meu host de destino.

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

O problema foi resolvido forçando no meu host de origem, em .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Eu poderia ter resolvido isso pedindo ao meu host de destino que não retirasse essa variável de nenhuma conexão ssh (geralmente, ou criando um arquivo locale ssh_config para o meu usuário)

Kaalahaan
fonte
1

Em um sistema Centos 6.2 local: Isso não ajudou:

localedef -i en_US -f UTF-8 en_US.UTF-8

Isso funcionou:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

Eu também eliminada locale-archiveno /usr/lib/locale. Não sei se isso foi necessário.

BobM
fonte
1

Essa foi minha correção no passado para erros de localidade.

Execute o seguinte: locale-gen

Depois edite /etc/locale.gen. Certifique-se de que o seguinte não seja comentado:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen
Thomas Vincent
fonte
1

Com o Iterm2 , é diferente.
Vá para Iterm2 -> Preferences, em seguida, vá para a Profilesguia e escolha a Terminalguia na parte inferior.
Vá para a Environmentcategoria e desmarque;

Definir variáveis ​​de localidade automaticamente

Por fim, feche e inicie uma nova sessão.

insira a descrição da imagem aqui

crsuarezf
fonte
0

e verifique se LC_ALL="en_US.UTF-8"está ou foi adicionado ao / etc / sysconifg / i18n

exemplo de conteúdo

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 
mayod
fonte
-3

editar /etc/sysconfig/i18n

Mude LANG="us"paraLANG="en_US"

Salve e saia, saia e faça login novamente.

NateDJ
fonte