Предупреждение о локали 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").

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

Связанный контент