
친구가 자신의 서버에서 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
.
이 문제는 다음 세 가지 방법 중 하나로 해결할 수 있습니다.
- 로컬 시스템을
en_US.utf8
. 나는 본다다른 질문이것이 바로 여러분이 한 일입니다(Mac OS X의ssh
로캘이 약간 이상하기 때문입니다). en_GB
원격 시스템에 로캘을 설치합니다 . Red Hat 5 파생 시스템에서는적절한 패키지 그룹을 설치하십시오. Red Hat 6 파생 시스템에서는 지원되는 모든 언어가 기본적으로 항상 설치됩니다(특정 패키지에는 설치해야 하는 자체 언어 팩이 있음).- 이 경우 오류는 완전히 무해하므로 무시하십시오.
답변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 설정에서 작동합니다.