Centos 5.8 区域设置警告

Centos 5.8 区域设置警告

一位朋友在他的服务器上运行 CentOS 5.8。这是一个基本无害的错误,但我已经厌倦了看到它。我更熟悉 debian,所以我不知道如何生成或重新配置语言环境。我习惯使用的常用二进制文件(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

答案1

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

我通常会在该文件中设置我的所有服务器LANG="C"。它是我构建脚本的一部分,但多年来它帮助我避免了终端和模拟问题。稍后我会用真正的解释来更新它。

#/etc/sysconfig/i18n

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

答案2

这里的问题是,您在个人系统上使用的区域设置与您在服务器上安装的区域设置不同ssh

您的本地系统使用 ,en_GB而远程系统使用en_US.utf8。(或者我可能把它们颠倒了……无论如何,它们都不匹配。)

因此,当您ssh进入系统时,您的语言环境设置会被传递,但远程系统没有安装语言环境来处理该en_GB语言,因此它会恢复到该C语言环境。

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

  1. 将您的本地系统更改为en_US.utf8。我看到你的其它问题这就是你所做的(因为 Mac OS X 的ssh区域设置有点奇怪)。
  2. en_GB在远程系统上安装语言环境。在 Red Hat 5 派生系统上,您安装适当的软件包组。在 Red Hat 6 派生的系统上,所有支持的语言始终默认安装(尽管某些软件包有自己的语言包,也必须安装)。
  3. 由于该错误(在这种情况下)完全无害,因此请忽略它。

答案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 构建的 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 设置下运行,没有任何警告。

相关内容