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