#原因node
我用的是linode的vps,系统为ubuntu14.04lts
当apt-get安装软件时,都会报一个相同的错误,以下ubuntu
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_TIME = "zh_CN.UTF-8", LC_MONETARY = "zh_CN.UTF-8", LC_ADDRESS = "zh_CN.UTF-8", LC_TELEPHONE = "zh_CN.UTF-8", LC_NAME = "zh_CN.UTF-8", LC_MEASUREMENT = "zh_CN.UTF-8", LC_IDENTIFICATION = "zh_CN.UTF-8", LC_NUMERIC = "zh_CN.UTF-8", LC_PAPER = "zh_CN.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
那是由于安装软件时,都会去执行一个update-locale
的命令,用来更新locale
这个命令是一个脚本,用perl写的,能够用whereis update-locale
查到,位置在/usr/sbin/update-localessh
上述报错并非由于update-locale
命令而引发,update-locale这段脚本没有问题,而是由于perl
可使用如下命令测试:测试
perl -e exit
其实,真正的缘由是perl为系统使用zh_CN.UTF-8,但系统不知道zh_CN.UTF-8是什么东西code
#解决方法vps
解决方法也很简单get
apt-get install language-pack-zh-hans
安装一个中文语言,系统就知道zh_CN.UTF-8了,这个时候用perl就不会报错了it
#深刻了解ubuntu14.04
这种状况通常是vps比较常见,由于通常都是用ssh的方式链接到vps上的
sshd有这个机制,会把客户机上的语言环境带到远程的机器上
客户机通常都会设置zh_CN.UTF-8语言,用来显示中文,而远端的vps通常就只有en_US.UTF-8 zh_CN.UTF-8一旦带过去就会报找不到的错误,文章开头已经说的很清楚了软件
##不靠谱的解决方法
网上还有些解决方法,并非很靠谱,虽然从表面来看像解决问题了,但实际上是把问题影藏了
好比在远程主机上的/etc/ssh/sshd_config
文件里,将AcceptEnv LANG LC_*
这行注释掉 而后重启远程的sshd,而后退出远程后,从新ssh上来。 这时,远程主机不会把客户机的语言环境(zh_CN.UTF-8)带过来 固然就不会再有报错,惋惜的是,远程主机是没法正确显示中文的,问题还在,只是被影藏了。