Centos 5.8语言环境警告

一位朋友在他的服务器上运行CentOS 5.8。 这是一个大多数无害的错误,但我厌倦了看到它。 我更熟悉debian,所以我不知道如何生成或重新configuration语言环境。 通常的二进制文件(locale-gen,dpkg等)我习惯于不在这台服务器上。

[root@localhost]# git pull origin master bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8) perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_GB:en", LC_ALL = "en_US.utf8", LANG = "en_GB" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). From git.com:www * branch master -> FETCH_HEAD Already up-to-date. 

一切看起来都很好用的语言环境。

 LANG=en_US.utf8 LC_CTYPE="en_US.utf8" LC_NUMERIC="en_US.utf8" LC_TIME="en_US.utf8" LC_COLLATE="en_US.utf8" LC_MONETARY="en_US.utf8" LC_MESSAGES="en_US.utf8" LC_PAPER="en_US.utf8" LC_NAME="en_US.utf8" LC_ADDRESS="en_US.utf8" LC_TELEPHONE="en_US.utf8" LC_MEASUREMENT="en_US.utf8" LC_IDENTIFICATION="en_US.utf8" LC_ALL=en_US.utf8 

它是一个支持的语言环境。

 [root@localhost]# locale -a | grep en_US en_US en_US.iso88591 en_US.iso885915 en_US.utf8 

/etc/sysconfig/i18n的内容是什么?

我通常在该文件中将所有服务器设置为LANG="C" 。 这是我的构build脚本的一部分,但这帮助我避免了多年来的terminal和仿真问题。 稍后我会更新这个真实的解释。

#/ etc / sysconfig / i18n

 LANG="C" SYSFONT="latarcyrheb-sun16" 

这里的问题是,您在个人系统上使用不同的语言环境设置,而不是您在ssh服务器上安装的语言环境设置。

当远程系统使用en_US.utf8时,本地系统使用en_GB 。 (或者我可能会颠倒过来,不pipe怎样,它们都不匹配。)

所以,当你ssh到系统,你的语言环境设置被传递,但远程系统没有安装locale来处理en_GB语言,所以它回落到C语言环境。

您可以通过以下三种方法之一来解决此问题:

  1. 将您的本地系统更改为en_US.utf8 。 我在你的另一个问题上看到,这就是你所做的(由于Mac OS X的ssh在locale上有点怪异)。
  2. 在远程系统上安装en_GB语言环境。 在Red Hat 5衍生系统上,您可以安装适当的软件包组 。 在Red Hat 6衍生系统上,所有支持的语言都默认安装(尽pipe某些软件包有自己的语言包也必须安装)。
  3. 由于错误(在这种情况下)是完全无害的,所以忽略它。

这似乎是一个Perl问题。 较新版本的perl没有这个问题。 查看我的系统输出:

 $ perl -v perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_US.UTF-8", LC_ALL = "en_US.UTF-8", LC_TYPE = "en_US.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 

这是为x86_64-linux-thread-multi构build的perl,v5.8.6

现在看到这个输出:

 $ LC_ALL=C perl -v This is perl, v5.8.6 built for x86_64-linux-thread-multi Copyright 1987-2004, Larry Wall 

好像perl 5.8.6不喜欢UTF-8的输出? 设置LC_ALL = C摆脱了警告。

我安装了另一个版本的Perl(5.18),并且在没有任何警告的情况下使用UTF-8设置。