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 設置,沒有任何警告。

相關內容