Redhat의 잘못된 시스템 로케일

Redhat의 잘못된 시스템 로케일

(새로 설치) 에서는 Redhat 7.9예제에 표시된 대로 많은 명령이 경고를 반환합니다.

# yum repolist
Failed to set locale, defaulting to C

로케일을 확인하면 다음이 반환됩니다.

# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

C.UTF-8시스템이 왜 다음과 같은지 모르겠습니다 .

# cat /etc/locale.conf
LANG=en_US.UTF-8

또한 다음을 실행할 때:

# localectl set-locale LANG=en_US.UTF-8

새 세션에서 올바른 로케일 설정을 얻었지만 "su -"로그아웃하거나 호스트로 다시 이동하면 해당 설정이 사라집니다..."sudo -i""ssh"

# su -
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.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=
# exit
logout
$ sudo -i
# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=


$ ssh host
[host]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

구성된 콘텐츠의 로케일을 영구적으로 설정하는 방법:/etc/locale.conf

$ cat /etc/locale.conf
LANG=en_US.UTF-8

답변1

근본 원인은 SSH 클라이언트가 설정한 "잘못된" 로케일이었습니다.

... ssh기본적으로 세션은 ssh클라이언트(명령이 실행되는 위치)로부터 로케일 환경 변수를 허용하며, 이는 서버가 설정하려는 내용을 재정의할 수 있습니다.

답변2

dnf install glibc-langpack-en

AlmaLinux 9.1에서 이 문제를 해결했습니다. 제안해 주신 @Sérgio에게 감사드립니다!

관련 정보