Прикрутка cp1251 к консоли RedHat Версия для печати   


1. Что для этого нужно и где это взять.

Я работал с версией 7.2 дистрибутива RedHat. Подобные действия наверняка можно выполнять и в других дистрибутивах (не rpm-based) с поправкой на пути. Необходимо чтобы в системе присутствовали пакеты kbd, console-tools и glibc-common - из них потребуются консольные шрифты, раскладки клавиатуры, кодовые страницы и программы loadkeys, consolechars (или setfont) и localedef. Я также использовал оболочку bash.


2. Теория.

Теорию нижеследующего расписывать не буду, так как я в ней не очень силен. Если кто захочет мне это объяснить или просто добавить к этой статье - добро пожаловать. Частично это описано в статье geekkoo здесь же, в Библиотеке, в разделе "X-сервер" статья "Русский в X-ах". Часть информации оттуда почерпнул и я :), за что автору спасибо.


3. Практика.

Сначала надо "собрать" локаль, потому как в это версии RedHat русской локали в кодировке cp1251 нет. Делается это примерно следующим образом:

# cd /usr/share/i18n
# localedef -f CP1251 -i ru_RU ru_RU.cp1251

По прошествии некоторого времени в каталоге /usr/lib/locale должен появиться каталог с файлами нашей локали - ru_RU.cp1251. Все, локаль есть. Теперь нам нужно загрузить нужные раскладку клавиатуры, шрифт и кодовую страницу. Это можно сделать так:

# loadkeys /lib/kbd/keymaps/i386/qwerty/ru-cp1251.kmap
# consolechars -f /lib/kbd/consolefonts/cyr-sun16
# consolechars -m /lib/kbd/consoletrans/cp1251.acm

Теперь надо скомандовать так называемую "магическую последовательность", которая заставляет ядро переключиться на работу с пользовательской кодовой страницей. Для того, чтобы узнать об этом побольше, обычно отсылают к документации по пакету kbd. Делается это так:

# echo -ne "\033(K"

Ну и напоследок надо немного поколдовать с bash'ем:

# set meta-flag on
# set convert-meta off
# set output-meta on

Теперь надо выбрать нужную локаль:

# export LANG=ru_RU.cp1251

(проверить можно при помощи команды locale) и при нажатии правой клавиши Ctrl должен включаться ввод русского языка в кодировке cp1251.



4. На каждый день.

Чтобы это работало постоянно, необходимо это вставить куда-нибудь, что выполняется при каждой загрузке системы или при каждом логоне. Вариант с загрузочными скриптами у меня почему-то не прошел, поэтому я выбрал второе и прописал команды начиная с loadkeys и заканчивая set output-meta в ~/.bash_profile. Также необходимо поправить файл /etc/sysconfig/i18n для выбора корректной локали для работы:

LANG="ru_RU.cp1251"
SUPPORTED="ru_RU.cp1251:ru_RU:ru"


5. Заключение.

В принципе, описанный метод подходит для настройки работы системы в любой кодировке. Необходимо только наличие соответствующих шрифтов, раскладки, кодовой страницы и локали, либо если нужной локали нет, то "исходников" для ее "сборки".


Ну и по идее это все должно отразиться и на работе в иксах.



6. Замечания.

Для дистрибутива Slackware Linux команду localedef следует дополнить путем для создаваемой локали:
localedef -c -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251


7. Автор.

San АНДРЕЕВ.



Обоснованные дополнения и исправления вэлкам через почту портала либо через /dev/null.

Опубликовал: San АНДРЕЕВ
Дата: 25.07.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P34_0_3_0/