Centos 5.8 로케일 경고

Centos 5.8 로케일 경고

친구가 자신의 서버에서 CentOS 5.8을 실행하고 있습니다. 대부분 무해한 오류이지만 보는 것에 지쳤습니다. 저는 데비안에 더 익숙하기 때문에 로케일을 생성하거나 재구성하는 방법을 잘 모르겠습니다. 나에게 익숙한 일반적인 바이너리(locale-gen, dpkg 등)는 이 서버에 없습니다.

[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.

로케일에서는 모든 것이 괜찮아 보입니다.

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

그리고 지원되는 로케일입니다.

[root@localhost]# locale -a | grep en_US
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8

답변1

의 내용은 무엇입니까 /etc/sysconfig/i18n?

나는 일반적으로 모든 서버를 LANG="C"해당 파일에 설정합니다. 이는 내 빌드 스크립트의 일부이지만 수년 동안 터미널 및 에뮬레이션 문제를 피하는 데 도움이 되었습니다. 나중에 실제 설명으로 업데이트하겠습니다.

# /etc/sysconfig/i18n

LANG="C"
SYSFONT="latarcyrheb-sun16"

답변2

여기서 문제는 대상 서버에 설치된 것과 다른 로케일 설정을 개인 시스템에서 사용한다는 것입니다 ssh.

로컬 시스템은 en_GB원격 시스템이 를 사용하는 동안 을 사용합니다 en_US.utf8. (또는 이 내용을 반대로 했을 수도 있습니다. 어느 쪽이든 일치하지 않습니다.)

따라서 ssh시스템으로 이동하면 로케일 설정이 전달되지만 원격 시스템에는 언어를 처리하기 위한 로케일이 설치되어 있지 않으므로 en_GB해당 로케일로 대체됩니다 C.

이 문제는 다음 세 가지 방법 중 하나로 해결할 수 있습니다.

  1. 로컬 시스템을 en_US.utf8. 나는 본다다른 질문이것이 바로 여러분이 한 일입니다(Mac OS X의 ssh로캘이 약간 이상하기 때문입니다).
  2. en_GB원격 시스템에 로캘을 설치합니다 . Red Hat 5 파생 시스템에서는적절한 패키지 그룹을 설치하십시오. Red Hat 6 파생 시스템에서는 지원되는 모든 언어가 기본적으로 항상 설치됩니다(특정 패키지에는 설치해야 하는 자체 언어 팩이 있음).
  3. 이 경우 오류는 완전히 무해하므로 무시하십시오.

답변3

이것은 펄 문제인 것 같습니다. 최신 버전의 Perl에는 이 문제가 없습니다. 내 시스템의 출력을 확인하세요.

$ 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").

이것은 x86_64-linux-thread-multi용으로 제작된 Perl, v5.8.6입니다.

이제 다음 출력을 확인하세요.

$ LC_ALL=C perl -v

This is perl, v5.8.6 built for x86_64-linux-thread-multi

Copyright 1987-2004, Larry Wall

Perl 5.8.6이 UTF-8 출력을 좋아하지 않는 것 같나요?? LC_ALL=C로 설정하면 경고가 제거되었습니다.

다른 버전의 Perl(5.18)을 설치했는데 경고 없이 UTF-8 설정에서 작동합니다.

관련 정보