无法设置语言环境的问题;确保$ LC_ *和$ LANG是正确的!


49

当我总是尝试安装新软件包时,会显示以下消息:

Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_GB:en",
    LC_ALL = (unset),
    LC_CTYPE = "en_GB.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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

我的操作系统是Debian Jessie 8.3(Mate),使用英语和法语键盘。当我输入语言环境时,得到以下信息:

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.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE=en_GB.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Answers:


62

Debian以源代码形式发布语言环境。它们需要显式编译。这样做的原因是,已编译的语言环境会使用更多的磁盘空间,但是大多数人只会使用其中的一些磁盘空间。

dpkg-reconfigure locales以root身份运行,在列表中选择所需的语言环境(包括您的设置,所需en_GBen_US.UTF-8—我也建议选择en_USen_GB.UTF-8),然后按<OK>

或者,编辑/etc/locale.gen,取消注释所需语言环境的行,然后locale-gen以root身份运行。

(注意:在Ubuntu上,这有不同的工作方式:locale-gen使用要生成的语言环境作为参数运行,例如sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8。)

另外,Debian现在有一个软件包locales-all,您可以代替安装locales。它具有所有预先生成的语言环境。缺点是它们会占用更多的磁盘空间(112MB和16MB)。


1
它有效,但是只有在我注销然后再次登录后才可以。
Forivin

也为我工作!
Jamie Ivanov

编辑/etc/locale.gen并没有完成我的工作(注销/登录成功),但是locale-gen解决了我的tmux: need UTF-8 locale (LC_CTYPE)问题Debian 4.9.82
eapo '18

2
@eapo正如我在回答状态,你需要编辑/etc/locale.gen 再运行locale-gen
吉尔斯(Gilles)'所以

我也错过了有关启用en_US.UTF-8以及您自己的语言环境的信息。我发现了困难的方法,然后转回这里做出自己的回答,然后才意识到一直在这里。
Alastair McCormack

19

评分最高的解决方案对我的情况没有帮助,因此我使用了以下方法:

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales

之后,我注销并登录,但错误丢失。


2
不建议使用LC_ALL,因为它会覆盖所有内容。请仅在测试时使用它,切勿在启动文件中进行设置。如:wiki.debian.org/Locale
Pitone Maledetto

6

这些命令救了我一命

# echo "LC_ALL=en_US.UTF-8" >> /etc/environment
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8

5

如果您在树莓派(或其他?)上遇到此问题,并且在ssh到pi时遇到错误,则还有其他2种解决方案

一种是/etc/ssh/sshd_config在pi上编辑并注释掉该行

AcceptEnv LANG LC_*

例如 sudo nano /etc/ssh/sshd_config

之后,您应该重新启动ssh服务器

sudo systemctl restart ssh

另一个在您的客户端计算机(不是pi)上进行编辑/etc/ssh/ssh_config(与上面的路径不同)并注释掉该行

SendEnv LANG LC_*

这两个对我都没有评论,但问题仍然出现。(RPi3,macOS10.14)
jorijnsmit

评论现在行了。真的没有机会进行测试,但是听起来更合乎逻辑……谢谢。
jorijnsmit

2

您需要安装软件包locales(或locales-allen_GB语言环境,具体取决于您使用的Debian版本)。

一种不存在此类错误的解决方法:设置LANG=C为root,以便使用任何语言环境。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.