perl: warning: Setting locale failed. 的解决方案

安装软件时,都会去执行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)带过来

当然就不会再有报错,可惜的是,远程主机是无法正确显示中文的,问题还在,只是被隐藏了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • perl: warning: Falling back to a fallback locale ("en_US....
    keaidelele阅读 999评论 0 50
  • [TOC] [玩转树莓派] 吊炸天的远程控制 Connect to Raspberry Pi 安装好了系统,接下来...
    ttdevs阅读 6,784评论 1 16
  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 1,221评论 0 1
  • 在编译的时候使用这个命令:./build.sh ubuntu full > stdout.txt 2> stder...
    卢衍泓阅读 959评论 0 1
  • 我准备将最近的文章全部换成一个标题——自我觉知之道 从上个月开始,我开始真正审视自己,很多事情都在问自己为什么,中...
    jennydeer阅读 232评论 0 0