当前位置: 首页>>技术问答>>正文


如何解决我的区域设置问题?

, , ,

问题描述

每次我开始或停止服务时,我都会收到此消息。

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "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").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
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   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
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   

我如何解决这个错误?

最佳解决思路

首先运行locale以列出当前为当前用户帐户定义的区域设置:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

然后生成缺失的语言环境并重新配置语言环境以引起注意:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

现在你不会再看到任何错误了!

次佳解决思路

上面没有任何建议工作在我的情况下(Ubuntu服务器12.04LTS)。 /etc/environment文件中最后帮助的是:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

由于某种原因,它失踪了。语言环境和其他命令的输出就像变量被正确定义一样。换句话说,不要理所有的基本的东西被宣布在应该宣布的地方。

第三种解决思路

发出后它们应该消失:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure在软件包安装完毕后重新配置软件包。将它传递给一个或多个包的名称进行重新配置。它会询问配置问题,就像首次安装软件包时一样。

第四种思路

只需将以下内容添加到您的.bashrc文件(假设您使用的是bash)

export LC_ALL="en_US.UTF-8"

第五种思路

如果您远程连接,这是一个常见问题,因此解决方案是不转发您的区域设置。编辑/etc/ssh/ssh_config并注释掉SendEnv LANG LC_*行。

第六种思路

有一个命令:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

它使用提供的值更新/etc/default/locale

第七种思路

这在12.10上对我有效:

apt-get install language-pack-en-base  

这是在dpkg-reconfigure locales没有产生任何结果之后。

第八种思路

不要忘记通过退出并重新登录退出SSH会话(或您的X11)。所有这些建议都不适用于我,除非我重新登录….

第九种思路

对于Ubuntu 12.10,除了ratzs的解决方案外,以上都没有工作。我建议将此添加到您的/etc/bash.bashrc文件中:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"

第十种思路

我被困在一个奇怪的状态,我的本地机器被设置为es,所以远程机器(通过vagrant)已经在un-handled状态下供应。因此,我不得不使用手册export=来促进成功的dpkg-reconfigure。那么系统很好。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/45.html,未经允许,请勿转载。