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
答え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"