Aviso de localidade do Centos 5.8

Aviso de localidade do Centos 5.8

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 sshpara o qual você ed.

Seu sistema local usa en_GBenquanto o sistema remoto usa en_US.utf8. (Ou posso invertê-los... de qualquer forma, eles não combinam.)

Portanto, quando você sshacessa o sistema, suas configurações de localidade são repassadas, mas o sistema remoto não possui localidades instaladas para lidar com o en_GBidioma, então ele volta para a Clocalidade.

Você pode resolver isso de três maneiras:

  1. Mude seu sistema local para en_US.utf8. eu vejo emsua outra perguntaque foi isso que você fez (devido ao Mac OS X sshser um pouco estranho com as localidades).
  2. Instale os en_GBcó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).
  3. 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.

informação relacionada