내 질문은 문제를 해결하는 방법이 아니라 실행에 관한 것입니다 apt-get install
. 이 문제를 해결하기 위해 찾은 가장 쉬운 방법은 다음과 같습니다.
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen
dpkg-reconfigure locales
이 작업이 완료되면 apt-get install --reinstall
로케일이 설정되지 않았다는 경고가 더 이상 발행되지 않습니다.
이 문제의 원인이 무엇인지 알고 싶습니다. 새로 설치한 후 이런 일이 발생했습니다. 테스트 목적으로 가상 상자에 여러 가지 설치를 수행했습니다. 그리고 설치할 때마다 이런 문제가 발생합니다. 그리고 다시 시작한 후에 문제가 다시 발생합니까? 이는 우분투에서도 마찬가지이다.
그렇다면 로케일 문제의 원인이 무엇인지 말해 줄 수 있는 사람이 있습니까?
답변1
Perl은 시작 시 환경 변수(및 기타 변수)에 지정한 로케일에서 컴파일된 로케일 데이터를 찾을 수 없을 때 /usr/lib/locale/.../
큰 소리로 /usr/lib/locale/locale-archive
불평 하는 것으로 알려져 있습니다 LANG
. 다음과 같이 쉽게 재현할 수 있습니다.
$ LANG=xyz perl /dev/null
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ja_JP.UTF-8",
LC_ADDRESS = "ja_JP.UTF-8",
LC_MONETARY = "ja_JP.UTF-8",
LC_NUMERIC = "ja_JP.UTF-8",
LC_TELEPHONE = "ja_JP.UTF-8",
LC_IDENTIFICATION = "ja_JP.UTF-8",
LC_MEASUREMENT = "ja_JP.UTF-8",
LC_TIME = "ja_JP.UTF-8",
LC_NAME = "ja_JP.UTF-8",
LANG = "xyz"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
따라서 기본적으로 위의 경고가 표시되면 시스템에서 사용 가능한 로케일과 환경 변수의 로케일을 확인해야 합니다.
locale -a
사용 가능한 모든 로케일을 보거나 localedef
나열/추가/제거하는 데 사용할 수 있습니다 locale-archive
.
$ localedef --list-archive
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
locale-gen
localedef
Debian 특정 구성 파일 래퍼 스크립트입니다 /etc/locale.gen
. dpkg-reconfigure locales
업데이트한 /etc/locale.gen
다음 에 전화하세요 locale-gen
.
우분투에는 동일한 명령이 있지만 locale-gen
그 구현은 데비안과 상당히 다른 것 같습니다. /var/lib/locales/supported.d/
구성을 볼 수 있지만 dpkg-reconfigure locales
Ubuntu에는 영향을 미치지 않습니다. 당신은 또한 볼 수 있습니다커뮤니티 위키 설명.
로케일 관련 변수는 다양한 프로그램에 의해 사용자 환경에서 명시적으로 또는 암시적으로 설정됩니다. 일반적으로 세션 시작 pam_env.so
시 /etc/default/locale
또는 ~/.pam_environment
세션 시작 시 초기화됩니다 . 특히 ssh
Debian/Ubuntu에서는 기본적으로 로컬 로케일 설정이 자동으로 원격 호스트 세션으로 전송됩니다. 매뉴얼 페이지 /etc/ssh/ssh_config
에서 다음 줄을 볼 수 있습니다 .ssh_config
SendEnv LANG LC_*