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

3 ответа

Каково содержание /etc/sysconfig/i18n?

Я обычно устанавливаю на всех своих серверах LANG="C" в этом файле. Это часть моего скрипта сборки, но с годами она помогла мне избежать проблем с терминалами и эмуляцией. Я обновлю это реальным объяснением позже.

# / etc / sysconfig / i18n

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

Проблема здесь в том, что вы используете в своей персональной системе другой языковой стандарт, чем тот, который установлен на сервере 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. Поскольку ошибка (в данном случае) совершенно безвредна, игнорируйте ее.

Это похоже на проблему 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").

Это Perl v5.8.6, созданный для x86_64-linux-thread-multi

Теперь посмотрите этот вывод:

$ 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 без предупреждения.

Другие вопросы по тегам