Ubuntu 13.10,Perl 抱怨设置区域设置

Ubuntu 13.10,Perl 抱怨设置区域设置

我对 Ubuntu 13.10 相当恼火。我需要修复服务器上的区域设置,否则我会看到类似这样的垃圾信息:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

网上大多数修复都指出添加

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

.bashrc.bash_login 应该可以解决这个问题。

有人提到从以下命令运行:

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

应该也会有帮助。我还尝试了上述所有方法,并重启了服务器。

当我通过终端 SSH 进入该服务器时,它似乎可以工作,但是当我从 capistrano 运行远程部署脚本时,我的输出中仍然会出现 Perl 错误。

我认为这正是 .bash_login 中的导出应该修复的问题。

我甚至尝试过跑步

apt-get install language-pack-en-base

什么都没起作用!

答案1

几点说明:

  • 系统范围的区域设置存储在 中/etc/default/locale
  • 设置所有的 LC_ALL、LC_CTYPE 和 LANG 是没有意义的。

更简洁的解决方案是/etc/default/locale只让

LANG=en_US.UTF-8

并将这些条目放入/etc/bash.bashrc

答案2

我添加了

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

代码片段改为 /etc/bash.bashrc,问题就解决了。

我怀疑调用 locale-gen、dpkg-reconfigure 和安装 language-pack-en-base 是否必要。

答案3

locale-gen en_US.UTF-8以 root 身份执行并且效果很好。

来源

相关内容