nix 包管理器:perl 警告:设置区域设置失败

hra*_*sch 7 opensuse perl locale nixos nix

每当我为 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").
Run Code Online (Sandbox Code Playgroud)

我怀疑它与 nix 有某种关系,因为其他 perl 脚本没有显示这种行为(我尝试perl -e exit过使用 WWW::Curl 的东西)。

更改区域设置确实反映在警告的输出中,但警告仍然显示在我能想到的每个配置中。

操作系统是 openSUSE。

我能做什么?

cyr*_*joe 5

显然这是 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"

    (全部为一行)。


hra*_*sch 4

我实际上export LC_ALL=C摆脱了警告。

这更多的是一种解决方法(因为 LC_ALL 也被强烈反对),但我的猜测是这种行为的原因在于 nix 对系统上的语言环境所做的假设不适用于 openSUSE。