nix 패키지 관리자에 대한 명령(예: nix-channel --update)을 실행할 때마다 다음 경고가 표시됩니다.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "",
LC_ALL = "en_US.UTF-8",
LC_CTYPE = "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").
다른 Perl 스크립트에서는 이 동작을 표시하지 않기 때문에 어떤 방식으로든 nix와 관련이 있는 것으로 생각됩니다(WWW::Curl을 사용해 보았습니다 perl -e exit
).
로케일을 변경하면 경고 출력에 반영되지만 제가 생각할 수 있는 모든 구성에는 경고가 표시됩니다.
운영 체제는 openSUSE입니다.
어떡해?
답변1
분명히 이것은 nix의 문제입니다. 하나 있다GitHub의 문제제안된해결책변수를 설정하여 LOCALE_ARCHIVE
.
이미 nix가 설치되어 있다면 다음을 수행하세요.
nix-env -iA nixpkgs.glibcLocales
Bash 구성 파일에서:
export LOCALE_ARCHIVE="$(nix-env --installed --no-name --out-path --query glibc-locales)/lib/locale/locale-archive"
(모두 한 줄에).
답변2
export LC_ALL=C
실제로 경고를 제거했습니다 .
이것은 해결 방법에 가깝지만(LC_ALL도 강력히 사용되지 않기 때문에), 내 생각에는 이 동작의 이유는 nix가 시스템의 로케일에 대해 만든 가정이 openSUSE에 적용되지 않기 때문인 것 같습니다.
답변3
검색 중에 이것을 찾았고 해결책을 제시해야겠다고 생각했습니다.
환경에서 LOCALE_ARCHIVE
이에 대한 포인터를 제공하기만 하면 됩니다 locale-archive
.
옵션 1
이전에 설치된 시스템을 사용하십시오 locale-archive
.
실제로 존재하는지 확인하세요
# should find the file
ls /lib/locale/locale-archive
/etc/.profile
이것을 and/or ~/.bashrc/
및/or 에 추가하여 ~/.zshrc
항상 쉘에 설정되도록 하세요.
export LOCALE_ARCHIVE="/lib/locale/locale-archive"
옵션 2a: flake + 하위 명령이 지원되지 않음
(출처: 위의 cyraxjoehttps://unix.stackexchange.com/a/243189/119561)
nix에서 로캘 지원을 설치합니다.
nix-env -iA nixpkgs.glibcLocales
찾을 수 있는지 확인하세요.
# should give you a path to a folder in your /nix/store
nix-env --installed --no-name --out-path --query glibc-locales
# should find the file
ls $(nix-env --installed --no-name --out-path --query glibc-locales)/lib/locale/locale-archive
/etc/.profile
이것을 and/or ~/.bashrc/
및/or 에 추가하여 ~/.zshrc
항상 쉘에 설정되도록 하세요.
export LOCALE_ARCHIVE="$(nix-env --installed --no-name --out-path --query glibc-locales)/lib/locale/locale-archive"
옵션 2b: flake + 하위 명령 지원 포함
nix에서 로캘 지원을 설치합니다.
nix profile install nixpkgs#glibcLocales
찾을 수 있는지 확인하세요.
# should give you a path to a folder in your /nix/store
nix profile list | grep glibcLocales | tail -n1 | cut -d ' ' -f4
# should find the file
ls $(nix profile list | grep glibcLocales | tail -n1 | cut -d ' ' -f4)/lib/locale/locale-archive
/etc/.profile
이것을 and/or ~/.bashrc/
및/or 에 추가하여 ~/.zshrc
항상 쉘에 설정되도록 하세요.
export LOCALE_ARCHIVE="$(nix profile list | grep glibcLocales | tail -n1 | cut -d ' ' -f4)/lib/locale/locale-archive"