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?
Respostas:
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 olocale -a
comando). Esse poderia ser o problema?Nos meus testes, quando defino a
LC_ALL
variável de ambiente comoen_US.UTF-8
, ssh'd para o servidor, a saída do meu comando locale foi definidaPOSIX
no meu caso. É o mesmo de quando NÃO defini (ou seja, desmarcou) aLC_ALL
variável antes de ssh'ing.Quando defino minha
LC_ALL
variável comoen_US.utf8
ouen_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.
fonte
Resolvido isso, desabilitando "Definir variáveis de ambiente de localidade na inicialização" em Terminal Settings> Advanced conforme esta captura de tela.
NOTA: Se você usar o iTerm2, poderá desativar a opção "Definir variáveis de localidade automaticamente" em Preferências> Perfis> Terminal
fonte
unset LC_CTYPE
ouexport LC_CTYPE=en_US.UTF-8
corrija o problema após o login.Maneira simples:
Adicionar
para
/etc/sysconfig/i18n
.fonte
O que funcionou para mim foi adicionar um link simbólico no servidor CentOS assim:
Depois de fazer isso, comandos como este funcionam:
Caso contrário, este último comando falhará com este erro:
Agora, uma solução ainda mais simples é adicionar esta linha ao / etc / bashrc no servidor:
fonte
Recebi essa mensagem específica ao fazer o login de um Solaris X em um host Centos.
O problema está vindo de 2 configurações:
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
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.
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)
fonte
Em um sistema Centos 6.2 local: Isso não ajudou:
Isso funcionou:
Eu também eliminada
locale-archive
no/usr/lib/locale
. Não sei se isso foi necessário.fonte
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:
fonte
Com o Iterm2 , é diferente.
Vá para
Iterm2 -> Preferences
, em seguida, vá para aProfiles
guia e escolha aTerminal
guia na parte inferior.Vá para a
Environment
categoria e desmarque;Por fim, feche e inicie uma nova sessão.
fonte
e verifique se
LC_ALL="en_US.UTF-8"
está ou foi adicionado ao / etc / sysconifg / i18nexemplo de conteúdo
fonte
editar
/etc/sysconfig/i18n
Mude
LANG="us"
paraLANG="en_US"
Salve e saia, saia e faça login novamente.
fonte