지난 며칠 동안 제가 있는 곳에서 심각한 문제를 겪었습니다. 내 것은 일반적으로 "en_GB.UTF-8"입니다. apt를 실행할 때 갑자기 오류 메시지가 나타납니다.
Traceback (most recent call last):
File "/usr/bin/apt-listchanges", line 33, in <module>
from ALChacks import *
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module>
sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
NameError: name '_' is not defined
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en_gb",
LC_MONETARY = "en_gb",
LC_MEASUREMENT = "en_gb",
LC_NUMERIC = "en_gb",
LANG = "en_US.utf8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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
Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale. at /usr/share/perl5/Debconf/FrontEnd /Gnome.pm line 97, <> line 1.
또한 "gnome-control-center-zone"을 실행하려고 하면 segfault 또는 GUI가 발생하지만 무엇이든 설정하려고 하면 segfault가 발생합니다. 오류 메시지의 "en_gb"에 유의하십시오. 소문자 "GB"는 유효하지 않습니다. 또한 내 시스템에는 en_US가 로케일로 존재하지 않는다고 생각합니다. 로그인하면 디렉터리 이름을 "내 언어가 변경되었습니다."로 바꿀지 묻는 대화 상자가 표시됩니다. 이는 약간 혼란스럽습니다. 업데이트 후에 시작되었다고 생각했지만 sid에서 gnome-shell 3.2를 설치하려고 시도했습니다(실수로 종속성을 충족하는 것이 쉬울 것이라고 생각하고 gnome 확장을 사용하고 싶었기 때문입니다). 다시 굴렸는데 뭔가 뒤틀리게 될까요? 그렇다면 무엇을 다시 설치해야 합니까?
/usr/bin/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=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC=en_gb
LC_TIME=en_gb
LC_COLLATE="en_US.utf8"
LC_MONETARY=en_gb
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_gb
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
locale-a에 대한 출력:
C
C.UTF-8
en_GB
en_GB.iso88591
en_GB.utf8
POSIX
답변1
로케일 정의는 많은 디스크 공간을 차지하므로(사용 가능한 다양한 로케일을 모두 추가하는 경우) 데비안과 다른 배포판은 요청 시 이를 생성합니다. Debian에서는 dpkg-reconfigure locales
(루트로) 실행하고 관심 있는 로캘을 선택합니다. 해당 상자를 선택하십시오( 사용하는 경우 en_US.utf8
다른 변형 도 포함). en_US
또한 일부 카테고리는 이상하게 선언되어 있습니다 en_gb
. en_gb
구성 파일()에서 해당 문자열을 검색하여 grep -r en_gb ~/.[!.]* /etc
문제가 되는 파일을 수정하세요.
답변2
마침내 "en_gb"의 소스를 찾았습니다. Ran dconf(새로운 gconf2 스타일 gnome 구성 교체. 이전에 이러한 설정을 확인했어야 했습니다 :-). 시스템->지역 설정에서 짜잔! 바라보다! 그게 다야. "en_GB"로 변경하고 Gnome 세션을 다시 시작했습니다. /usr/bin/locale에 대한 출력은 이제 소문자 로케일이나 가짜 en_US 로케일 없이 예상대로 정확하게 표시됩니다. dconf 설정이 어떻게 잘못 설정되었는지 잘 모르겠습니다. 나는 그것을 한 기억이 없으며 그것을 바꾸고 싶은 이유를 생각할 수 없습니다. "gnome-control-center zone"도 이제 잘 작동합니다. 세그폴트도 없고 모든 것이 잘 작동하는 것 같습니다. 약간 허름하고 존재하지 않는 영역으로 인해 넘어질 수 있습니다. 물론 더 우아하게 실패하고 유익한 메시지를 제공하는 것이 그리 어렵지는 않을 것입니다. 유용한 조언을 주신 Giles에게 감사드립니다. 그는 구성 측면에 대해 옳았습니다. 어떻게 놓쳤는지 모르겠습니다. dconf 데이터가 실제로 어떻게 저장되는지 살펴봐야 합니다.