#原因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)帶過來 固然就不會再有報錯,惋惜的是,遠程主機是沒法正確顯示中文的,問題還在,只是被影藏了。