옵션 1

옵션 1

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가 설치되어 있다면 다음을 수행하세요.

  1. nix-env -iA nixpkgs.glibcLocales

  2. 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"

관련 정보