当我运行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").
我该怎么解决呢?
你的操作系统不知道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
$
要想永久解决问题,请选择其中之一
在旧的主机上,在shell的初始化文件中设置LANG环境变量。
在客户端修改环境,例如,使用命令LANG=C ssh hunter2而不是ssh hunter2。
如果您拥有管理员权限,可以通过注释掉本地/etc/ssh/ssh_config文件中的SendEnv LANG LC_*行来阻止ssh发送环境变量。(多亏了这个回答。有关更多信息,请参阅OpenSSH中的Bug 1285。)
Debian GNU/Linux 11(靶心)
我在GCP中创建一个全新的VM实例后遇到了这个问题。
基本上,我刚刚运行了以下程序
$ sudo apt-get update
$ sudo apt-get upgrade
这里我得到了错误
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.
以下是我的解决方法。
首先安装区域设置。
$ sudo apt-get install locales
打开语言环境文件(使用您喜欢的编辑器)。
$ sudo nano /etc/default/locale
添加以下内容并保存。
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
执行以下命令。
$ sudo localedef -i en_US -f UTF-8 en_US.UTF-8
重新启动终端。
运行命令测试并通过ctrl + d关闭它。
$ perl
注意:
我创建了一个实例来测试我的解决方案,以确保。如果对你不起作用请告诉我。
我希望这对你有所帮助。