安装软件时,都会去执行update-locale命令,用来更新 locale。这个命令是 perl 脚本(可以用whereis update-locale查到)
上述警告并不是因为 update-locale 命令错了,而是因为 perl 的配置出了问题。
可以使用以下命令只运行 perl 测试:
$ perl -e exit
perl 使用系统提供的默认 localezh_CN.UTF-8,但这个值是 ssh 从客户端传递来的,系统其实不知道zh_CN.UTF-8该如何处理。
我们安装语言包即可解决问题:
$ apt-get install language-pack-zh-hans
安装一个中文语言,系统就知道zh_CN.UTF-8了,这个时候用perl就不会报错了
这种情况一般是vps比较常见,因为一般都是用ssh的方式连接到vps上的
sshd有这个机制,会把客户机上的语言环境带到远程的机器上
客户机一般都会设置zh_CN.UTF-8语言,用来显示中文,而远端的vps一般就只有en_US.UTF-8zh_CN.UTF-8一旦带过去就会报找不到的错误,
网上还有些解决方法,并不是很靠谱,虽然从表面来看像解决问题了,但其实是把问题影藏了
比如在远程主机上的/etc/ssh/sshd_config文件里,将AcceptEnv LANG LC_*这行注释掉然后重启远程的sshd,然后退出远程后,重新ssh上来。
这时,远程主机不会把客户机的语言环境(zh_CN.UTF-8)带过来
当然就不会再有报错,可惜的是,远程主机是无法正确显示中文的,问题还在,只是被隐藏了。