当我跑步时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").
我如何解决它?
All*_*rgi 458
以下是如何在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
Run Code Online (Sandbox Code Playgroud)
如果您使用的是zsh,请编辑zshrc:
# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
Gre*_*con 421
你的操作系统不知道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_*
Run Code Online (Sandbox Code Playgroud)
它允许客户端将这些环境变量的值传播到新会话中.
如果您不需要完整的语言环境,警告会提示您如何压制它:
% 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小智 197
如果使用debootstrap创建rootfs,则需要生成语言环境.你可以通过运行:
# (optional) enable missing locales
sudo nano /etc/locale.gen
# then regenerate
sudo locale-gen
Run Code Online (Sandbox Code Playgroud)
这个提示来自,https://help.ubuntu.com/community/Xen
Pau*_*lin 138
这通常意味着您没有在Linux机器上正确设置区域设置.
在Debian或Ubuntu上,这意味着你需要这样做
$ sudo locale-gen $ sudo dpkg-reconfigure locales
小智 134
使用:
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
Run Code Online (Sandbox Code Playgroud)
它适用于Debian.我不知道为什么 - 但是locale-gen没有结果.
重要!这是一个临时解决方案.它必须在每个会话中运行.
Ind*_*ore 88
我在使用Git时得到了同样的警告
解决此警告取消选中该Set locale environment variable on startup选项并重新启动终端.屏幕截图下方代表我的终端设置.
jfr*_*k53 35
它在Ubuntu中很简单.您必须从头开始生成Locales,从命令行运行以下命令:
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
这应创建语言环境,然后重新配置它们.
jos*_*son 26
/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
Run Code Online (Sandbox Code Playgroud)
war*_*iuc 25
我现在用这个:
$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
然后注销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
Run Code Online (Sandbox Code Playgroud)
tkj*_*jef 20
在经过多次搜索之后,在Debian上做到了这一点.
第一:
sudo apt-get purge locales
Run Code Online (Sandbox Code Playgroud)
然后:
sudo aptitude install locales
Run Code Online (Sandbox Code Playgroud)
和着名的:
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
这会解决语言环境系统,然后重新安装语言环境并将libc6从2.19降级到2.13,这就是问题所在.然后再次配置语言环境.
Alo*_*nes 14
这是一个快速的答案。我们将设置重启后未设置的语言环境。首先打开bash文件并对其进行编辑:
nano .bashrc
Run Code Online (Sandbox Code Playgroud)
将这些行添加到文件中:
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)
通过重新加载bash激活更改:
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
检测结果 :
locale
Run Code Online (Sandbox Code Playgroud)
小智 13
对于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
Run Code Online (Sandbox Code Playgroud)
为我工作.
Dav*_*les 13
对于 Ubuntu 服务器和 Debian:
无需在 bashrc 中创建导出或处理 dpkg-reconfigure。
只需将内容替换/etc/default/locale为:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
小智 13
Debian GNU/Linux 11(靶心)
我在 GCP 中创建全新的虚拟机实例后遇到了此问题。
基本上,我刚刚运行了以下命令
$ sudo apt-get update
$ sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
我在这里遇到了错误
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LC_TERMINAL = "iTerm2",
LANG = "C"
are supported and installed on your system.
Run Code Online (Sandbox Code Playgroud)
这是我修复它的方法。
locales第一个。$ sudo apt-get install locales
Run Code Online (Sandbox Code Playgroud)
$ sudo nano /etc/default/locale
Run Code Online (Sandbox Code Playgroud)
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
$ sudo localedef -i en_US -f UTF-8 en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
重新启动您的终端。
运行命令进行测试并通过 关闭它ctrl + d。
$ perl
Run Code Online (Sandbox Code Playgroud)
注意:我创建了一个实例来测试我的解决方案以确保。如果它不适合您,请告诉我。
我希望它对你有帮助。
小智 12
如果您使用Mac OS X v10.10(Yosemite)或更高版本连接服务器Linux,则可以尝试这些步骤.
保留文件/ etc/ssh/sshd-config原始文件
穿上你的〜/ .bash_profile
export LANG="en_US"
export LC_ALL=$LANG.UTF-8
Run Code Online (Sandbox Code Playgroud)跑
dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
并选择"en_US.UTF-8"
gla*_*ain 10
您需要在适当的位置配置语言环境/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
Run Code Online (Sandbox Code Playgroud)
sudo nano /etc/locale.gen
Run Code Online (Sandbox Code Playgroud)
取消注释要使用的语言环境(例如en_US.UTF-8 UTF-8):
然后运行:
sudo /usr/sbin/locale-gen
Run Code Online (Sandbox Code Playgroud)
资料来源: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
Run Code Online (Sandbox Code Playgroud)
解:
试试这个(uk_UA.UTF-8是我当前的语言环境.编写你的语言环境,例如en_US.UTF-8!)
sudo locale-gen uk_UA.UTF-8
Run Code Online (Sandbox Code Playgroud)
还有这个.
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
小智 8
对于 Debian 用户,在修改我的语言环境以更改机器语言后,我遇到了这个问题。这就是我所做的:
修改.bashrc:
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
Run Code Online (Sandbox Code Playgroud)
取消fr_FR.UTF-8文件中的注释行etc/locale.gen->sudo locale-gen生成丢失的包
sudo update-locale
sudo dpkg-reconfigure locales 将我的语言环境配置为 fr_FR.UTF-8
在etc/default/locale文件中添加额外的行:
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
重新启动我的电脑,一切正常
对我来说,我修复了这个错误编辑.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
Run Code Online (Sandbox Code Playgroud)
亲切的,
如果在通过连接ssh到远程主机时出现此问题,则远程系统可能缺少某些区域设置。我不会重复如何安装和配置区域设置,因为其他答案已经很好地解释了这一点。
正如其他答案所指出的,ssh 应该将本地计算机的区域设置传递到远程主机。例如,如果您设置了澳大利亚语言环境(例如en_AU.UFT-8),并且您正在连接到仅附带的新设置的 Ubuntu 服务器,en_US.UTF-8那么您将收到此警告。
要解决这个问题,您有多种选择:
在远程主机上安装所需的区域设置,使其与客户端上配置的区域设置相匹配。
更改 SSH 配置以不传递客户端的环境变量。我不会推荐这个。
通过从文件.bashrc和其他文件中导出区域设置来覆盖远程计算机上的区域设置。
将缺少的语言环境添加到文件.bash_profile:
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
然后获取.bash_profile文件:
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
添加正确的语言环境~/.bashrc,~/.bash_profile,/etc/environment和类似就能解决问题,但它是不推荐,因为它覆盖了从设置/etc/default/locale,这是最好混乱,并可能导致持续在最坏情况下被应用不是语言环境.
相反,应该/etc/default/locale直接编辑,这可能看起来像这样:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US
Run Code Online (Sandbox Code Playgroud)
更改将在您下次登录时生效.您可以通过以下方式获取现有shell中的新语言环境/etc/default/locale:
$ . /etc/default/locale
Run Code Online (Sandbox Code Playgroud)
对于从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").
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题:
我知道这个线程很老但也许有人会觉得这很有用.我知道这有多烦人.
我经历过这种情况,通过从一台机器登录到另一台机器ssh。远程计算机没有\xe2\x80\x99t 有我在本地计算机上的区域设置文件。您可以禁用将区域设置从本地计算机转发到远程计算机(在文件中/etc/ssh/sshd_config删除行AcceptEnv LANG LC_CTYPE \xe2\x80\xa6)或安装区域设置(在这种情况下无需更改)。
我在Fedora、Red Hat Linux和CentOS上使用过
\nsudo dnf install langpacks-de\nRun Code Online (Sandbox Code Playgroud)\n适用于德语 (de) 语言包。我退出,再登录,结果成功了。
\n搜索其他语言包
\ndnf search langpacks-\nRun Code Online (Sandbox Code Playgroud)\n列出我使用的可用区域设置
\nlocalectl list-locales\nRun Code Online (Sandbox Code Playgroud)\n并设置一个新的
\nsudo localectl set-locale de_DE.utf8\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
每当我在最新的Kali Linux版本上运行 Perl 脚本(例如 enum4linux)时,都会遇到这个问题。
kali@kali:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: 2020.3
Codename: kali-rolling
kali@kali:~$
Run Code Online (Sandbox Code Playgroud)
例如,
kali@kali:~$ enum4linux
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_ADDRESS = "ms_MY.UTF-8",
LC_NAME = "ms_MY.UTF-8",
LC_MONETARY = "ms_MY.UTF-8",
LC_PAPER = "ms_MY.UTF-8",
LC_IDENTIFICATION = "ms_MY.UTF-8",
LC_TELEPHONE = "ms_MY.UTF-8",
LC_MEASUREMENT = "ms_MY.UTF-8",
LC_TIME = "ms_MY.UTF-8",
LC_NUMERIC = "ms_MY.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").
enum4linux v0.8.9 (http://labs.portcullis.co.uk/application/enum4linux/)
Copyright (C) 2011 Mark Lowe (mrl@portcullis-security.com)
Run Code Online (Sandbox Code Playgroud)
查看给出的警告消息。
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Run Code Online (Sandbox Code Playgroud)
另外,请注意LC_ALL = (unset)
解决方案很简单。您所要做的就是设置它。
export LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
例如,
kali@kali:~$ export LC_ALL=en_US.UTF-8
kali@kali:~$
Run Code Online (Sandbox Code Playgroud)
并且问题解决了
kali@kali:~$ enum4linux
enum4linux v0.8.9 (http://labs.portcullis.co.uk/application/enum4linux/)
Copyright (C) 2011 Mark Lowe (mrl@portcullis-security.com)
Run Code Online (Sandbox Code Playgroud)
对于永久解决方案,您可能需要将其添加到.bashrc文件中。
| 归档时间: |
|
| 查看次数: |
495551 次 |
| 最近记录: |