![无法设置区域设置的问题;确保 $LC_* 和 $LANG 正确!](https://linux22.com/image/85393/%E6%97%A0%E6%B3%95%E8%AE%BE%E7%BD%AE%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9B%E7%A1%AE%E4%BF%9D%20%24LC_*%20%E5%92%8C%20%24LANG%20%E6%AD%A3%E7%A1%AE%EF%BC%81.png)
当我总是尝试安装新软件包时,我收到以下消息:
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 时,我得到:
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=
答案1
Debian 以源代码形式提供语言环境。它们需要显式编译。其原因是编译的语言环境使用更多的磁盘空间,但大多数人只使用其中的一小部分。
以 root身份运行dpkg-reconfigure locales
,在列表中选择您想要的区域设置(根据您的设置,您需要en_GB
和en_US.UTF-8
— 我建议同时选择en_US
和),然后按。en_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
。)
locales-all
或者,Debian 现在有一个可以安装的软件包,而不是locales
.它预先生成了所有区域设置。缺点是它们会占用更多磁盘空间(112MB 与 16MB)。
答案2
最受好评的解决方案对我的情况没有帮助,所以我使用了这个:
export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
之后我注销并登录,错误消失了。
答案3
如果您在树莓派(或其他?)上遇到此问题,并且在 ssh 到 pi 时收到错误,还有其他 2 个解决方案
一种是/etc/ssh/sshd_config
在 pi 上编辑并注释掉该行
AcceptEnv LANG LC_*
例如sudo nano /etc/ssh/sshd_config
之后你应该重新启动 ssh 服务器
sudo systemctl restart ssh
另一个位于您的客户端计算机上(不是圆周率)编辑/etc/ssh/ssh_config
(与上面不同的路径)并注释掉该行
SendEnv LANG LC_*
答案4
您需要安装该软件包locales
(或locales-all
en_GB 语言环境,具体取决于您拥有的 Debian 版本)。
避免出现此类错误的解决方法:设置LANG=C
为 root,以便它将使用不语言环境。