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
локали.
Вы можете решить это одним из трех способов:
- Измените свою локальную систему на
en_US.utf8
, Я вижу в вашем другом вопросе, что это то, что вы сделали (из-за Mac OS Xssh
быть немного странным с языками). - Установите
en_GB
локали в удаленной системе. В производных системах Red Hat 5 вы устанавливаете соответствующую группу пакетов. В производных системах Red Hat 6 все поддерживаемые языки всегда устанавливаются по умолчанию (хотя некоторые пакеты имеют свои собственные языковые пакеты, которые также должны быть установлены). - Поскольку ошибка (в данном случае) совершенно безвредна, игнорируйте ее.
Это похоже на проблему 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 без предупреждения.