Настройка локали в консоли в CentOS 4.x-6.x
Частенько
владельцы выделенных серверов получают свои сервера от провайдеров с
неверно сконфигурированной локалью. Как следствие в консоли не
отображаются русские буквы. На тему русификации уже написана гора
всяческих заметок, но я в двух словах опишу методы установки правильной
локали в CentOS linux 4.x, 5.x, 6.x. Так как CentOS грубо говоря
является клоном RedHat Enterprize Linux, то консоль использует кодировку
UTF-8 то есть юникод. Ну так вот у них повелось. Лично мое мнение —
юникод рулит. Постепенно юникод вытесняет кучу наших кодировок типа
CP1251, KOI8-R. И это очень хорошо. Потому как так достали все эти
прибабахи с кодировками — спасу нет.
Итак, для того чтобы увидеть нормальные русские буквы в нашей консоли
первым делом нам необходимо настроить клиента. Подключаемся же мы
удаленно, и наверняка с помощью нашей любимой проги putty. Для настройки
putty запускаем ее выбираем необходимое соединение, загружаем его с
помощью кнопки Load. Далее переходим в Window —> Translation и в
выпадающем меню выбираем UTF-8. После чего сохраняем настройки для этого
соединения с помощью кнопки Save. Как ни странно многие проблемы с
кодировками решаются именно этим пунктом Если ничего не получилось — идем дальше.
Проверить какая локаль сейчас установлена можно с помощью команды locale. Обычно вывод команды выглядит примерно так
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Это означает что кодировка у нас в консоли используется en_US.UTF-8. Но вывод может выглядеть совсем иначе. Например вот так
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Значит есть проблемы. Для того чтобы проверить наличие готовых локалей в системе выполняем команду
И в выводе команды ищем необходимую нам локаль. Для случая с
кодировкой UTF-8 необходимая локаль имеет вид ru_RU.utf8. Если такая
строка есть в выводе команды, то создаем файл /etc/sysconfig/i18n
командой:
1 | touch /etc/sysconfig/i18n
|
После чего в файл пишем следующие строки
LANG="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"
После этих изменений сохраняем файл, выходим из консоли и заходим в
нее опять. После этих действий мы наблюдаем русский шрифт в локали. Если
же при выводе команды «locale -a | grep ru» нет русской локали, то ее
необходимо сделать выполнив команду:
1 | localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
|
Она берет из папки /usr/share/i18n/locales/ файл ru_RU (это файл с
русской локалью) и из папки /usr/share/i18n/charmaps файл UTF-8.gz (это
символьная карта для юникода) и на основе этиф файлов генерирует нужную
нам локаль ru_RU.UTF-8. После этого действия у нас в системе появляется
нужная нам локаль, а дальше делаем все так как описано на абзац выше.
Добавлю только, что файлы находящиеся в папке usr/share/i18n/
принадлежат glibc-common-2.x.x и если вы их не наблюдаете там, то
необходимо разбираться с самим glibc-common.
Источник: http://dedicatesupport.com/content/nastroika-lokali-v-konsoli-v-centos
|