CentOS 6 e erro local

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 eu digito "locale" na linha de comando, recebo 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?

    
por Cem 12.10.2011 / 22:48

10 respostas

10

No servidor de onde você tem um locale definido através de uma variável de ambiente? Ao observar minha instalação do CentOS 6, a única localidade que posso encontrar com suporte é identificada como en_US.utf8 (descoberta usando o comando locale -a ). Este poderia ser o problema?

Em meus testes, quando defini a variável de ambiente LC_ALL como en_US.UTF-8 , ssh'd para o servidor, a saída do meu comando locale foi definida como POSIX no meu caso. Isso é o mesmo que quando eu não defini (ou seja, não definido) a variável LC_ALL antes do ssh'ing.

Quando eu defino minha variável LC_ALL para en_US.utf8 ou en_US.utf-8 , ssh'd para minha caixa CentOS 6, a saída da localidade era a mesma que foi definida na caixa de origem.

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

    
por 12.10.2011 / 23:29
17

Resolvido isso desativando "Definir variáveis de ambiente de local na inicialização" em Configurações do terminal > Avançado conforme esta captura de tela.

NOTA:SevocêusaroiTerm2vocêpodedesativaraopção"Definir variáveis de localidade automaticamente" em Preferências > Perfis > Terminal

    
por 06.02.2012 / 22:49
11

Maneira simples:

Adicionar

 LC_CTYPE="en_US.UTF-8"

para /etc/sysconfig/i18n .

    
por 27.08.2013 / 14:07
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 trabalho:

export LC_CTYPE=UTF-8

Se você não fizer isso, 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 é apenas adicionar essa linha ao / etc / bashrc no servidor:

export LC_CTYPE="en_US.utf8"
    
por 20.08.2014 / 19:00
2

Eu recebi esta mensagem específica, quando faço login de um host do Solaris X para um 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 duas configurações:

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

Enviar variáveis de ambiente relacionadas ao local         SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETÁRIOS LC_MESSAGES

  1. No meu host de origem, essas configurações foram definidas desta 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 em meu host de origem, em .bash_profile: #      exportação LC_ALL = fr_FR.UTF-8      exportação LANG = fr_FR.UTF-8

Eu poderia ter resolvido isso pedindo ao meu dest destro para não tomar essa variável de qualquer conexão ssh (geralmente, ou criando um arquivo ssh_config para meu usuário)

    
por 09.10.2015 / 11:26
1

Em um sistema local do Centos 6.2: 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

Também excluí locale-archive em /usr/lib/locale . Eu não sei se isso foi necessário.

    
por 06.03.2012 / 20:24
1

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

Execute o seguinte: locale-gen

Em seguida, edite o /etc/locale.gen. Certifique-se de que o seguinte não está comentado:

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

generate locale

locale-gen
    
por 12.10.2011 / 23:37
1

Com Iterm2 , é diferente.
Vá para Iterm2 -> Preferences , depois vá para a guia Profiles e escolha a guia Terminal na parte inferior.
Vá para Environment category e desmarque;

Set locale variables automatically

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

    
por 24.03.2017 / 20:26
0

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

exemplo de conteúdo

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 
    
por 06.10.2013 / 09:14
-3

edite /etc/sysconfig/i18n

Alterar LANG="us" para LANG="en_US"

Salvar e sair, sair e voltar.

    
por 25.09.2014 / 16:22