当我跑步时perl
,我得到警告:
perl:警告:设置区域设置失败。 perl:警告:请检查您的语言环境设置: 语言=(未设置), LC_ALL =(未设置), LANG =“ en_US.UTF-8” 在您的系统上受支持并安装。 perl:警告:退回到标准语言环境(“ C”)。
我如何解决它?
~/.pam_environment
当我跑步时perl
,我得到警告:
perl:警告:设置区域设置失败。 perl:警告:请检查您的语言环境设置: 语言=(未设置), LC_ALL =(未设置), LANG =“ en_US.UTF-8” 在您的系统上受支持并安装。 perl:警告:退回到标准语言环境(“ C”)。
我如何解决它?
~/.pam_environment
Answers:
您的操作系统不了解en_US.UTF-8
。
您没有提到特定的平台,但是我可以重现您的问题:
%uname -a OSF1 hunter2 V5.1 2650 Alpha %perl -e退出 perl:警告:设置区域设置失败。 perl:警告:请检查您的语言环境设置: LC_ALL =(未设置), LANG =“ en_US.UTF-8” 在您的系统上受支持并安装。 perl:警告:退回到标准语言环境(“ C”)。
我的猜测是您使用ssh从较新的台式机连接到此较旧的主机。通常/etc/ssh/sshd_config
包含
AcceptEnv LANG LC_*
这允许客户端将这些环境变量的值传播到新会话中。
如果您不需要完整的语言环境,则警告会提示您如何消除它:
%env LANG = C perl -e退出 %
或使用bash:
$ LANG = C perl -e出口 $
要永久修复,请选择以下其中一项
dpkg-reconfigure locales
,消息消失了。
service ssh reload
花费了不到一秒钟的时间,甚至没有导致当前的ssh会话终止。
以下是在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
LC_ALL
覆盖所有其他变量,因此我宁愿设置LANG=de_AT.UTF-8
和设置单个变量,例如LC_MESSAGES=en_US.UTF-8
。如果未设置变量,则回退到LANG
。您也可以例如。unset LC_CTYPE
迫使它回落LANG
。
~/.bashrc
给我解决...然后必须使用source ~/.bashrc
... 重新加载... Thnks <3
如果要使用debootstrap创建rootfs,则需要生成语言环境。您可以通过运行以下命令执行此操作:
# (optional) enable missing locales
sudo nano /etc/locale.gen
# then regenerate
sudo locale-gen
Ubuntu Server
$ echo en_US UTF-8 >> /etc/locale.gen
。
locale-gen
不接受参数。它从读取/etc/locale.gen
。
采用:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
它适用于Debian。我不知道为什么-但是locale-gen没有结果。
重要!这是一个临时解决方案。必须为每个会话运行它。
.bashrc
文件中。
local-gen
仅处理在中未注释的语言环境/etc/local.gen
。您可能需要先做echo en_US UTF-8 >> /etc/locale.gen
。
通常,这意味着您没有在Linux机器上正确设置语言环境。
在Debian或Ubuntu上,这意味着您需要做
$ sudo locale-gen $ sudo dpkg-重新配置语言环境
另请参见man locale-gen。
sudo locale-gen es_UY.UTF-8
我在使用Git时收到相同的警告
解决此警告的方法取消选中该Set locale environment variable on startup
选项,然后重新启动终端。屏幕截图下方显示了我的终端设置。
这是Ubuntu中的简单修复。您必须从头开始生成语言环境,从命令行运行以下命令:
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
这应该创建语言环境,然后重新配置它们。
pt_BR pt_BR.UTF-8
-谢谢。
添加以下内容/etc/environment
为我解决了在Debian和Ubuntu上的问题(当然,请进行修改以匹配您要使用的语言环境):
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
/etc/environment
而应在中设置/etc/default/locale
。两者似乎都现在工作。
LC_CTYPE
我现在正在使用这个:
$ 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,这就是问题所在。然后再次配置语言环境。
dpkg-reconfigure locales
就是所需要的。sudo
如果您是sudo类型的家伙,或者以root身份执行。然后根据您的Shell环境中的内容选择您的语言环境。
这是一个快速的答案。我们将设置重启后未设置的语言环境。首先打开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
如果使用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”
sudo nano /etc/locale.gen
取消注释要使用的语言环境(例如 en_US.UTF-8 UTF-8
):
然后运行:
sudo /usr/sbin/locale-gen
您需要在/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
添加正确的语言环境~/.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
locale-gen
对于从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").
这为我解决了问题:
我知道这个线程很旧,但是也许有人会觉得这个有用。我知道这有多烦人。
与往常一样,细节决定成败...
在Mac OS X v10.7.5(Lion)上,为了修复一些Django错误,我~/.bash_profile
设置了:
export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG
反过来,很长一段时间我在使用Perl时都收到了该警告。
我的错!正如我稍后意识到的那样,我的系统是en_US.UTF-8
!我通过简单地从
export LANG=en_EN.UTF-8
至
export LANG=en_US.UTF-8
如果您不关心语言环境问题,可以设置PERL_BADLANG=0
。当然,这可能会导致错误的本地化。
以前所有的答案都是错误的。消息很清楚-缺少语言环境。解决方案是添加适当的语言环境。为此,您可以编辑/etc/locale.gen文件,删除报告为丢失的语言环境前面的#号,然后发出以下命令:
$ sudo locale-gen
这实际上将生成/etc/locale.gen中指定的语言环境,因此将不会显示该消息。
就我而言,使用debian8.6,我必须在以下位置更改设置:
/etc/ssh/ssh_config
对于 #AcceptEnv LANG LC_*
和
sshd_config
为#SendEnv LANG LC_*
然后重新启动ssh服务。
最后,做了
locale-gen en_US.UTF-8
和 dpkg-reconfigure locales
将缺少的语言环境添加到.bash_profile
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile
然后获取您的.bash_profile
source ~/.bash_profile
就我而言,这是输出:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....
解决方案是:
sudo locale-gen ro_RO.UTF-8
对我而言,在Ubuntu 16.04(Xenial Xerus)上,以下工作有效:
root@host:~#locale-gen en_GB.UTF-8
root@host:~#localectl set-locale LANG=en_GB.UTF-8,LC_ALL=en_GB.UTF-8
然后重启...