Назад | Перейти на главную страницу

Предупреждение о региональных настройках 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

Проблема здесь в том, что в вашей персональной системе вы используете другой языковой стандарт, нежели тот, который установлен на сервере, который вы используете. sshред.

Ваша локальная система использует en_GB в то время как удаленная система использует en_US.utf8. (Или я мог бы изменить их местами ... в любом случае, они не совпадают.)

Итак, когда вы ssh в систему, ваши настройки локали передаются, но удаленная система не имеет установленных локалей для обработки en_GB язык, поэтому он возвращается к C локаль.

Вы можете решить эту проблему одним из трех способов:

  1. Измените вашу локальную систему на en_US.utf8. Я вижу в ваш другой вопрос что это то, что вы сделали (из-за Mac OS X ssh немного странно с местными стандартами).
  2. Установите en_GB locales в удаленной системе. В системах, производных от Red Hat 5, вы установить соответствующую группу пакетов. В системах, производных от Red Hat 6, все поддерживаемые языки всегда устанавливаются по умолчанию (хотя некоторые пакеты имеют свои собственные языковые пакеты, которые также необходимо установить).
  3. Поскольку ошибка (в данном случае) полностью безвредна, игнорируйте ее.

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

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

# / и т.д. / sysconfig / i18n

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

Это похоже на проблему с 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 без каких-либо предупреждений.