当我跑步时perl
,我收到警告:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
我如何解决它?
以下是如何在Mac OS Lion(10.7)或Cygwin(Windows 10)上解决它:
将以下行添加到主机上的bashrc或bash_profile:
# Setting for the new UTF-8 terminal support in Lion export LC_CTYPE=en_US.UTF-8 export LC_ALL=en_US.UTF-8
如果您使用的是zsh,请编辑zshrc:
# Setting for the new UTF-8 terminal support in Lion LC_CTYPE=en_US.UTF-8 LC_ALL=en_US.UTF-8
你的操作系统不知道en_US.UTF-8
.
您没有提到特定平台,但我可以重现您的问题:
% uname -a OSF1 hunter2 V5.1 2650 alpha % perl -e exit perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
我的猜测是您使用ssh从较新的台式机连接到这台旧主机./etc/ssh/sshd_config
包含它是很常见的
AcceptEnv LANG LC_*
它允许客户端将这些环境变量的值传播到新会话中.
如果您不需要完整的语言环境,警告会提示您如何压制它:
% env LANG=C perl -e exit %
或者使用bash:
$ LANG=C perl -e exit $
要获得永久性修复,请选择其中一个
在较旧的主机上,LANG
在shell的初始化文件中设置环境变量.
在客户端修改您的环境,例如,而不是ssh hunter2
使用命令LANG=C ssh hunter2
.
如果您具有管理员权限,请通过注释掉本地文件中的SendEnv LANG LC_*
行来停止ssh发送环境变量.(感谢这个答案.有关更多内容,请参阅OpenSSH的Bug 1285.) /etc/ssh/ssh_config
如果使用debootstrap创建rootfs,则需要生成语言环境.你可以通过运行:
# (optional) enable missing locales sudo nano /etc/locale.gen # then regenerate sudo locale-gen
这个提示来自,https://help.ubuntu.com/community/Xen
这通常意味着您没有在Linux机器上正确设置区域设置.
在Debian或Ubuntu上,这意味着你需要这样做
$ sudo locale-gen $ sudo dpkg-reconfigure locales
另见man locale-gen.
使用:
export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_TYPE=en_US.UTF-8
它适用于Debian.我不知道为什么 - 但是locale-gen没有结果.
重要!这是一个临时解决方案.它必须在每个会话中运行.
我在使用Git时得到了同样的警告
解决此警告取消选中该Set locale environment variable on startup
选项并重新启动终端.屏幕截图下方代表我的终端设置.
它在Ubuntu中很简单.您必须从头开始生成Locales,从命令行运行以下命令:
sudo locale-gen en_US en_US.UTF-8 sudo dpkg-reconfigure locales
这应创建语言环境,然后重新配置它们.
/etc/environment
在Debian和Ubuntu上添加以下内容来修复我的问题(当然,修改以匹配您要使用的语言环境):
LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LC_TYPE=en_US.UTF-8
我现在用这个:
$ cat /etc/environment ... LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
然后注销SSH会话并再次登录.
老答案:
只有这帮助了我:
$ locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE=en_US.UTF-8 LC_NUMERIC=ru_RU.UTF-8 LC_TIME=ru_RU.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=ru_RU.UTF-8 LC_MESSAGES="en_US.UTF-8" LC_PAPER=ru_RU.UTF-8 LC_NAME=ru_RU.UTF-8 LC_ADDRESS=ru_RU.UTF-8 LC_TELEPHONE=ru_RU.UTF-8 LC_MEASUREMENT=ru_RU.UTF-8 LC_IDENTIFICATION=ru_RU.UTF-8 LC_ALL= $ sudo su # export LANGUAGE=en_US.UTF-8 # export LANG=en_US.UTF-8 # export LC_ALL=en_US.UTF-8 # locale-gen en_US.UTF-8 Generating locales... en_US.UTF-8... up-to-date Generation complete. # dpkg-reconfigure locales Generating locales... en_AG.UTF-8... done en_AU.UTF-8... done en_BW.UTF-8... done en_CA.UTF-8... done en_DK.UTF-8... done en_GB.UTF-8... done en_HK.UTF-8... done en_IE.UTF-8... done en_IN.UTF-8... done en_NG.UTF-8... done en_NZ.UTF-8... done en_PH.UTF-8... done en_SG.UTF-8... done en_US.UTF-8... up-to-date en_ZA.UTF-8... done en_ZM.UTF-8... done en_ZW.UTF-8... done Generation complete. # exit $ locale LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8
在经过多次搜索之后,在Debian上做到了这一点.
第一:
sudo apt-get purge locales
然后:
sudo aptitude install locales
和着名的:
sudo dpkg-reconfigure locales
这会解决语言环境系统,然后重新安装语言环境并将libc6从2.19降级到2.13,这就是问题所在.然后再次配置语言环境.
这是一个快速的答案。我们将设置重启后未设置的语言环境。首先打开bash文件并对其进行编辑:
nano .bashrc
将这些行添加到文件中:
export LC_ALL="en_US.UTF-8" export LANG="en_US.UTF-8" export LANGUAGE="en_US.UTF-8"
通过重新加载bash激活更改:
source ~/.bashrc
检测结果 :
locale
对于Ubuntu使用这个,
#export LANGUAGE=en_US.UTF-8 #export LC_ALL=en_US.UTF-8 #export LANG=en_US.UTF-8 #export LC_TYPE=en_US.UTF-8
为我工作.
如果您使用Mac OS X v10.10(Yosemite)或更高版本连接服务器Linux,则可以尝试这些步骤.
保留文件/ etc/ssh/sshd-config原始文件
穿上你的〜/ .bash_profile
export LANG="en_US" export LC_ALL=$LANG.UTF-8
跑
dpkg-reconfigure locales
并选择"en_US.UTF-8"
您需要在适当的位置配置语言环境/etc/default/locale
,注销,登录,然后运行常规命令
root@host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale root@host:~# exit local-user@local:~$ ssh root@host root@host:~# locale-gen en_US.UTF-8 root@host:~# dpkg-reconfigure locales
sudo nano /etc/locale.gen
取消注释要使用的语言环境(例如en_US.UTF-8 UTF-8
):
然后运行:
sudo /usr/sbin/locale-gen
资料来源:http://people.debian.org/~schultmc/locales.html
perl: warning: Falling back to the standard locale ("C"). locale: Cannot set LC_ALL to default locale: No such file or directory
解:
试试这个(uk_UA.UTF-8是我当前的语言环境.编写你的语言环境,例如en_US.UTF-8!)
sudo locale-gen uk_UA.UTF-8
还有这个.
sudo dpkg-reconfigure locales
对我来说,我修复了这个错误编辑.bashrc文件添加导出.初步评论后添加.
添加语言支持.export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_TYPE=en_US.UTF-8
亲切的,
添加正确的语言环境~/.bashrc
,~/.bash_profile
,/etc/environment
和类似就能解决问题,但它是不推荐,因为它覆盖了从设置/etc/default/locale
,这是最好混乱,并可能导致持续在最坏情况下被应用不是语言环境.
相反,应该/etc/default/locale
直接编辑,这可能看起来像这样:
LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_CTYPE=en_US
更改将在您下次登录时生效.您可以通过以下方式获取现有shell中的新语言环境/etc/default/locale
:
$ . /etc/default/locale
对于从MacOS High Sierra上的iTerm2.app连接到DigitalOcean或其他云托管提供商的任何人,并在某些命令上收到此错误:
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 a fallback locale ("en_US.UTF-8").
这解决了我的问题:
我知道这个线程很老但也许有人会觉得这很有用.我知道这有多烦人.