Настройка локали в консоли в CentOS.

Частенько владельцы выделенных серверов получают свои сервера от провайдеров с неверно сконфигурированной локалью. Как следствие в консоли не отображаются русские буквы. На тему русификации уже написана гора всяческих заметок, но я в двух словах опишу методы установки правильной локали в CentOS linux 4.x, 5.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=

Значит есть проблемы.
Для того чтобы проверить наличие готовых локалей в системе выполняем команду
locale -a | grep ru

И в выводе команды ищем необходимую нам локаль. Для случая с кодировкой UTF-8 необходимая локаль имеет вид ru_RU.utf8. Если такая строка есть в выводе команды то делаем следующее:
Создаем файл /etc/sysconfig/i18n командой:
touch /etc/sysconfig/i18n
После чего в файл пишем следующие строки:
LANG=»ru_RU.UTF-8″
SUPPORTED=»ru_RU.UTF-8:ru_RU:ru»
SYSFONT=»latarcyrheb-sun16″

После этих изменений сохраняем файл, выходим из консоли и заходим в нее опять. После этих действий мы наблюдаем русский шрифт в локали.
Если же при выводе команды
locale -a | grep ru
нет русской локали то ее необходимо сделать. Команда для этого выглядит так:
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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *