
Um amigo está executando o CentOS 5.8 em seu servidor. É um erro praticamente inofensivo, mas estou cansado de ver isso. Estou mais familiarizado com o debian, então não sei como gerar ou reconfigurar localidades. Os binários usuais (locale-gen, dpkg, etc.) com os quais estou acostumado não estão neste servidor.
[root@localhost]# git pull origin master
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_GB:en",
LC_ALL = "en_US.utf8",
LANG = "en_GB"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
From git.com:www
* branch master -> FETCH_HEAD
Already up-to-date.
Tudo parece bem com os locais.
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8
E é uma localidade suportada.
[root@localhost]# locale -a | grep en_US
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
Responder1
Qual é o conteúdo de /etc/sysconfig/i18n
?
Normalmente defino todos os meus servidores LANG="C"
nesse arquivo. Faz parte do meu script de construção, mas me ajudou a evitar problemas de terminal e emulação ao longo dos anos. Vou atualizar isso com a explicação real mais tarde.
# /etc/sysconfig/i18n
LANG="C"
SYSFONT="latarcyrheb-sun16"
Responder2
O problema aqui é que você usa uma configuração de localidade diferente em seu sistema pessoal daquela instalada no servidor ssh
para o qual você ed.
Seu sistema local usa en_GB
enquanto o sistema remoto usa en_US.utf8
. (Ou posso invertê-los... de qualquer forma, eles não combinam.)
Portanto, quando você ssh
acessa o sistema, suas configurações de localidade são repassadas, mas o sistema remoto não possui localidades instaladas para lidar com o en_GB
idioma, então ele volta para a C
localidade.
Você pode resolver isso de três maneiras:
- Mude seu sistema local para
en_US.utf8
. eu vejo emsua outra perguntaque foi isso que você fez (devido ao Mac OS Xssh
ser um pouco estranho com as localidades). - Instale os
en_GB
códigos de idioma no sistema remoto. Em sistemas derivados do Red Hat 5, vocêinstale o grupo de pacotes apropriado. Em sistemas derivados do Red Hat 6, todos os idiomas suportados são sempre instalados por padrão (embora certos pacotes tenham seus próprios pacotes de idiomas que também devem ser instalados). - Como o erro é (neste caso) completamente inofensivo, ignore-o.
Responder3
Isso parece um problema de Perl. Versões mais recentes do perl não apresentam esse problema. Veja a saída do meu sistema:
$ perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LC_TYPE = "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").
Este é perl, v5.8.6 construído para x86_64-linux-thread-multi
Agora veja esta saída:
$ LC_ALL=C perl -v
This is perl, v5.8.6 built for x86_64-linux-thread-multi
Copyright 1987-2004, Larry Wall
Parece que o Perl 5.8.6 não gosta da saída UTF-8? A configuração LC_ALL=C eliminou o aviso.
Instalei outra versão do perl (5.18) e que funciona com configuração UTF-8 sem qualquer aviso.