CentOS 6 및 로캘 오류


16

방금 CentOS 6을 설치했으며 SSH를 통해 시스템에 원격으로 로그인 할 때마다 다음 오류가 발생합니다.

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

명령 행에 "locale"을 입력하면 다음과 같은 결과가 나타납니다.

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=

무엇이 문제가 될 수 있습니까? 이 문제를 어떻게 해결할 수 있습니까?


SendEnv LANG 인수는 맥 OS X 10.7.5에 나를 위해 일한 * LC_ 주석의 솔루션

답변:


10

ssh 서버에서 환경 변수를 통해 로케일을 설정 했습니까? CentOS 6 설치를 살펴보면 지원되는 로케일은 en_US.utf8( locale -a명령을 사용하여 발견 )으로 식별됩니다 . 이것이 문제가 될 수 있습니까?

테스트에서 LC_ALL환경 변수를 en_US.UTF-8서버로 ssh'd로 설정하면 내 로케일 명령의 출력이 POSIX제 경우 에 설정되었습니다 . 이것은 LC_ALLssh'ing 전에 변수를 설정하지 않았을 때와 같습니다.

LC_ALL변수를 en_US.utf8또는로 설정하고 en_US.utf-8CentOS 6 상자에 ssh'd하면 로캘의 출력은 소스 상자에 설정된 것과 동일합니다.

UTF에도 대문자를 사용하지 않았습니다.


11
그건 그렇고, 나는 이것이 Mac OS X Lion ssh 설정에서 발생한다는 것을 알았습니다. / etc / ssh_config 파일을 편집하고 SendEnv LANG LC_ *에 주석을 달았습니다. 내 문제를 해결했습니다.
Cem

@Cem 팁을 주셔서 감사합니다. 이것은 실제로 Mac OS X Lion에서 수정됩니다.
Zsolt Török

17

이 스크린 샷에 따라 터미널 설정> 고급에서 "시작시 로케일 환경 변수 설정"을 비활성화하여이 문제를 해결했습니다.

여기에 이미지 설명을 입력하십시오

참고 : iTerm2를 사용하는 경우 환경 설정> 프로필> 터미널에서 "로캘 변수 자동 설정"옵션을 비활성화 할 수 있습니다


1
이것은 나를 위해 일했습니다. 특히, Terminal.app가 "LC_CTYPE = UTF-8"을 설정 한 후 OP에 의해보고 된 오류가 발생했습니다. 다른 방법으로, unset LC_CTYPE또는 export LC_CTYPE=en_US.UTF-8로그인 후 문제를 픽스.
tardate

이것은 나를 위해 그것을 해결했다, thx
pjvds

11

간단한 방법 :

더하다

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18n.


많은 시도 후에 나에게 효과적입니다.
Tommy

2

나를 위해 일한 것은 CentOS 서버에 다음과 같이 심볼릭 링크를 추가하는 것이 었습니다.

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

이 작업과 같은 명령을 수행하면 :

export LC_CTYPE=UTF-8

그렇지 않으면이 마지막 명령이 다음 오류와 함께 실패합니다.

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

더 간단한 해결책은 서버의 / etc / bashrc에 다음 줄을 추가하는 것입니다.

export LC_CTYPE="en_US.utf8"

입력 주셔서 감사합니다! 이것은 정말 훌륭했습니다. 마지막으로 그 성가신 코멘트를 제거 할 수 있습니다 ...
cristobal

2

Solaris X에서 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

문제는 두 가지 설정에서 발생합니다.

  1. 내 기본 시스템 ssh_config에서 시스템에 해당 변수를 전달하도록 요청합니다.

로케일 관련 환경 변수 보내기 SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. 소스 호스트에서 이러한 설정이 다음과 같이 설정되었습니다.

    소스 # 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 =

그러나 보시다시피 LC_MESSAGES는 fr.UTF-8로 설정되어 있으며 대상 호스트의 옵션이 아닙니다.

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

소스 호스트 .bash_profile에서 강제로 문제가 해결되었습니다. # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

내 호스트가 ssh 연결 에서이 변수를 가져 가지 않도록 요청함으로써 (일반적으로 또는 사용자의 로케일 ssh_config 파일을 작성하여) 해결할 수 있습니다.


1

로컬 Centos 6.2 시스템에서 : 이것은 도움이되지 않았습니다 :

localedef -i en_US -f UTF-8 en_US.UTF-8

이것은 효과가 있었다 :

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

locale-archive에서 삭제 했습니다 /usr/lib/locale. 이것이 필요한지 모르겠습니다.


1

이것은 과거의 로케일 오류에 대한 나의 수정이었습니다.

다음을 실행하십시오 : locale-gen

그런 다음 /etc/locale.gen을 편집하십시오. 다음의 주석 처리가 제거되었는지 확인하십시오.

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

generate locale

locale-gen

1

Iterm2 , 다르다.
으로 이동 한 Iterm2 -> Preferences다음 Profiles탭으로 이동 Terminal하여 하단 에서 탭을 선택하십시오 . 카테고리로
이동하여 Environment표시를 해제하십시오.

로캘 변수를 자동으로 설정

마지막으로 새 세션을 닫고 시작하십시오.

여기에 이미지 설명을 입력하십시오


0

LC_ALL="en_US.UTF-8"/ etc / sysconifg / i18n에 있거나 추가 되었는지 확인하십시오.

컨텐츠 예

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

편집하다 /etc/sysconfig/i18n

변경 LANG="us"LANG="en_US"

저장하고 종료하고 로그 아웃 한 후 다시 로그인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.