当我运行 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").
我如何解决它?
30 回答
您需要在
/etc/default/locale
, logout, login 中正确配置区域设置,然后运行常规命令如果使用debootstrap创建rootfs,则需要生成语言环境 . 您可以通过运行:
这个提示来自,https://help.ubuntu.com/community/Xen
之前的所有答案都是错误的 . 消息很明确 - 缺少区域设置 . 解决方案是添加适当的区域设置 . 您可以通过编辑/etc/locale.gen文件,删除报告为缺失的语言环境前面的#符号,然后发出命令:
这实际上会生成/etc/locale.gen中指定的语言环境,因此不会显示该消息 .
按照接受的答案:
LC_ALL = C ssh hunter2
在客户端为我做了伎俩 .
我现在正在使用这个:
然后注销SSH会话并再次登录 .
Old answer:
只有这帮助了我:
对我来说,我修复了这个错误编辑.bashrc文件添加导出 . 在初始评论后添加 .
添加语言支持 .
亲切的,
对于从MacOS High Sierra上的iTerm2.app连接到DigitalOcean或其他 Cloud 托管提供商的任何人,并在某些命令上收到此错误:
这解决了我的问题:
我知道这个线程很老但也许有人会觉得这很有用 . 我知道这有多烦人 .
它在Ubuntu中很简单 . 您必须从头开始生成Locales,从命令行运行以下命令:
这应创建语言环境,然后重新配置它们 .
一如既往,魔鬼在细节......
在Mac OS X v10.7.5(狮子),修复了一些Django错误,在我的
~/.bash_profile
中我已经设置:反过来很长一段时间我在使用Perl时都收到了警告 .
我的错!正如我后来意识到的那样,我的系统是
en_US.UTF-8
!我只是通过改变来修复它至
在经过多次搜索之后,在Debian上做到了这一点 .
第一:
然后:
和着名的:
这会解决语言环境系统,然后重新安装语言环境并将libc6从2.19降级到2.13,这就是问题所在 . 然后再次配置语言环境 .
使用:
它适用于Debian . 我不知道为什么 - 但是locale-gen没有结果 .
重要!这是一个临时解决方案 . 必须为每个会话运行它 .
就我而言,这是输出:
解决方案是:
仅适用于macOS和Mac OS X用户
使用Git时我收到同样的警告
要解决此警告 Uncheck
Set locale environment variable on startup
选项并重新启动终端 . 屏幕截图下方代表我的终端设置 .将以下内容添加到
/etc/environment
为Debian和Ubuntu解决了我的问题(当然,修改以匹配您要使用的语言环境):以下是在Mac OS Lion(10.7)或Cygwin(Windows 10)上解决此问题的方法:
将以下行添加到主机上的bashrc或bash_profile:
如果您使用的是zsh,请编辑zshrc:
这通常意味着您没有在Linux机器上正确设置区域设置 .
在Debian或Ubuntu上,这意味着你需要这样做
另见man locale-gen .
对我来说,在Ubuntu 16.04(Xenial Xerus)上有以下工作:
然后重启......
使用zsh ohmyzsh我将其添加到
.zshrc
:删除行
export LANG=en_US.UTF-8
重新打开一个新标签并进入SSH,为我工作:)
ssh
默认覆盖LC语言环境变量 . 见/etc/ssh/sshd_config
:所以也许你需要在本地shell中设置这些变量 .
将缺少的区域设置添加到.bash_profile
然后找到你的.bash_profile
如果您不关心区域设置问题,you can set PERL_BADLANG=0 . 当然,这可能导致不正确的本地化 .
您的操作系统不了解
en_US.UTF-8
.您没有提到特定平台,但我可以重现您的问题:
我的猜测是您使用ssh从较新的台式机连接到这台旧主机 . 包含
/etc/ssh/sshd_config
是很常见的它允许客户端将这些环境变量的值传播到新会话中 .
如果您不需要完整的语言环境,警告会提示您如何压制它:
或者使用bash:
要获得永久性修复,请选择其中一个
在较旧的主机上,在shell的初始化文件中设置
LANG
环境变量 .在客户端修改您的环境,例如,而不是
ssh hunter2
,使用命令LANG=C ssh hunter2
.如果您具有管理员权限,请通过在本地
/etc/ssh/ssh_config
文件中注释掉SendEnv LANG LC_*
行来停止ssh发送环境变量 . (感谢this answer . 见Bug 1285 for OpenSSH了解更多 . )在我的情况下,使用debian8.6,我不得不更改以下设置:
/etc/ssh/ssh_config
代表#AcceptEnv LANG LC_*
和
sshd_config
for#SendEnv LANG LC_*
然后重启ssh服务 .
最后,做了
locale-gen en_US.UTF-8
和dpkg-reconfigure locales
取消注释要使用的区域设置(例如
en_US.UTF-8 UTF-8
):然后运行:
资料来源:http://people.debian.org/~schultmc/locales.html
Solution:
试试这个( uk_UA.UTF-8 是我当前的语言环境 . 编写你的语言环境,例如 en_US.UTF-8 !)
还有这个 .
将正确的区域设置添加到
~/.bashrc
,~/.bash_profile
,/etc/environment
等将解决问题,但不建议这样做,因为它会覆盖/etc/default/locale
中的设置,这最多会让人感到困惑,并且可能导致区域设置在最坏情况下不能始终如一地应用 .相反,应该直接编辑
/etc/default/locale
,这可能看起来像这样:如果使用Mac OS X v10.10(Yosemite)或更高版本连接服务器Linux,则可以尝试这些步骤 .
保留文件/ etc / ssh / sshd-config原文
穿上〜/ .bash_profile
并选择“en_US.UTF-8”
对于Ubuntu使用这个,
为我工作 .
在使用英国键盘/语言环境的Arch Linux中,我遇到以下错误:
在
/etc/profile
中导出我的语言环境没有修复它 .但是我通过编辑
/etc/locale.gen
并启用了它来解决这个问题en_US.utf8
预期找到并运行local-gen
的语言环境 .(我使用pac-manager,它使用AUR中的一大堆
perl
模块,因此在我的特定情况下重新安装perl
会令人讨厌)将
LC_ALL="en_GB.utf8"
添加到/etc/environment
并重新启动 . 就这样 .