В этом разделе кратко описываются способы настройки кириллицы, которые специфичны для различных дистрибутивов Unix. Способы разнятся не только от дистрибутива к дистрибутиву, но и от версии дистрибутива
Для настройки кириллицы прежде всего полезно прочитать разделы Настройка текстовой моды, Настройка X Window и только после этого (зная что вы делаете) обратиться к подразделам этого параграфа.
Пример русификации консоли koi8. Проверено для версии 6.3
Запустите программу конфигурации и администрирования yast под суперпользователем.
Для выбора консольного шрифта в меню "System administration" следует
выбрать пункт "Set the console font". Я рекомендую выбрать какой-либо
шрифт из серии "Cyr_a8x" (у меня стоит шрифт
Cyr_a8x16.pcfu.gz
) - сделайте этот шрифт "As standart
font".
Далее в меню "System administration" выберете пункт "Change configuration file". Среди предложенных для изменения переменных нас интересуют
CONSOLE_FONT - консольный шрифт (как поменять эту переменную было описано ранее - можно менять ее и здесь)
CONSOLE_SCREENMAP - установите переменную равную koi2alt
CONSOLE_MAGIC - установить равную "(K" (кавычки не писать)
KEYTABLE - рекомендую установить равную ru3.map.gz
(переключатель правый Alt - раскладка стандартная) или
ru4.map.gz
(переключатель CapsLock - раскладка для Windows
клавиатуры)
CONSOLE_UNICODEMAP - cyralt.uni
RC_LANG - можно установить равной ru_RU.KOI8-R
Все это можно сделать подредактировав файл rc.local в
/etc/
.
P.S. Если при установке указать, что ваш язык "русский" (LANGUAGE=russian), то все настроится автоматически (ну, почти)
Делайте так же, как описано в разделе X Window - настройка ничем от стандартной настройки не отличается.
Из чего же сделана русификация в RedHat? Как известно, в Linux существуют два конкурирующих пакета управления шрифтами и клавиатурой : kbd и consoletools. В RedHat 5.x для русификации консоли применялся пакет kbd. В RedHat 6.x применяется уже другой пакет - consoletools. Разницы между ними радикальной нет, но это, увы, делает несовместимым пакет initscripts для версий RedHat 5.x и 6.x.
Русификация (и вообще включение национальных установок) в Linux RedHat 5.2 осуществляется из пакета initscripts. Не будем вдаваться в подробности работы SYSV init, опишем краткий путь. Предполагается, что читатель данного текста умеет пользоваться пакетом RPM, который весьма важен в RedHat.
Клавиатура в RedHat 5.2 на нижнем уровне управляется утилитой
loadkeys из пакета kbd-096a-8
. Пакет стандартный,
RedHat лишь добавил туда несколько новых раскладок.
Запускается loadkeys из /etc/rc.d/init.d/keytable
,
управляющий файл : /etc/sysconfig/keyboard
. Там прописывается
единственная переменная KEYTABLE:
/etc/sysconfig/keyboard : ============ KEYTABLE=ru1 ============
Есть интерактивная утилита смены раскладки : kbdconfig, которая на
самом деле лишь прописывает значение в /etc/sysconfig/keyboard
.
Файлы клавиатурных раскладок лежат в /usr/lib/kbd/keymaps/
.
Мне нравится раскладка ru_win_ctrl.map.gz
от IP Labs. Переключение по правому
Ctrl, точка и запятая в русском регистре, как в Windows, т.е. рядом с правой
кнопкой Shift. (На моей клавиатуре нарисовано именно так). Надо положить этот
файл в /usr/lib/kbd/keymaps/i386/quwerty/
, запустить
kbdconfig и выбрать ru_win_ctrl. (Хотя и родная раскладка
ru1 тоже ничего (точка и запятая на Shift 6, Shift 7 )).
Включить новую раскладку на ходу можно запустив:
/etc/rc.d/init.d/keytable start
Консоль в RedHat 5.2 на нижнем уровне управляется утилитами setfont и mapscrn из пакета kbd-096a-8.
Все, что необходимо сделать, это выполнить следующие команды :
$ setfont Cyr_a8x16 $ mapscrn koi2alt
Кроме того, необходимо переключить Charset G1
на вновь
загруженный шрифт. Для этого нужно на все виртуальные консоли
/dev/vty*
вывести "магическую" последовательность ESC (K.
$ echo -ne "\033(K"
К сожалению, с русификацией консоли в RedHat не все так прозрачно, как с клавиатурой. Отдельной "подсистемы" для управления консолью нет. А если делать все по RedHat-овски, то возникают проблемы.
RedHat рекомендует использовать "новый" формат, с UNICODE таблицей:
$ setfont Cyr_a8x16 -u koi8
К сожалению, на "новом" формате сползают рамки на mc и в других программах. В RedHat 6 применяется другой пакет: consoletools и другая версия initscripts, там все сделано немного по-другому.
Но попробуем выкрутится ! ;-)
Все утилиты запускаются из файла /sbin/setsysfont
(на самом деле
это shell-скрипт), параметры для которого живут в
/etc/sysconfig/i18n
. Не очень понятно, каково отношение между
i18n и шрифтами, но тем не менее это так.
/etc/sysconfig/i18n ===== SYSFONT= UNIMAP= =====
Не очень понятно, откуда посылать ESC (K. Можно посылать его
например из ~.profile
Делайте так же, как описано в разделе X Window - настройка ничем от стандартной настройки не отличается.
Этот раздел посвящен кириллизации Debian 2.2.(если какие-либо действия надо совершить для младших версий этого дистрибутива - это будет отмечено особо).
В файле /etc/environment
исправьте LANG=C
на
LANG=ru_RU.KOI8-R
. Если вы хотите, чтобы у root были русские
сообщения и он мог вводить русские буквы в X Window, сделайте тоже самое в
/root/.bashrc
.
Если версия вашего дистрибутива меньше 2.2, то дополнительно выполните команду
# mv /usr/share/locale/ru_SU /usr/share/locale/ru_RU.KOI8-Rс привилегиями пользователя root.
Зачем же мы удаляем ru_SU и делаем локаль с таким большим именем? Все потому, что SU это сокращение страны Судан, а эта локаль предназначена для людей из России, говорящих по русски. Можно было бы оставить ru_RU скажите вы. Но ru_RU уже существует, это локаль с кодировкой ISO-8859-5. Поэтому следует поставить ru_RU.KOI8-R.
Если в системе все еще инсталлирован пакет kbd
, то замените его
на console-tools
. Вставьте в
/etc/console-tools/config
:
SCREEN_FONT=Cyr_a8x16 APP_CHARSET_MAP=koi2alt.trans
Выполните команду
cp /usr/share/keymaps/i386/qwerty/ru1.map.gz /etc/console-tools/default.map.gz
с привилегиями пользователя root.
Первый вопрос который возникает - зачем грузить какой-то
APP_CHARSET_MAP? Действительно, если загрузить шрифт KOI8-R,
то можно будет не грузить карту перекодировки (APP_CHARSET_MAP). В этом
случае вместо символов псевдографики будут появляться русские буквы 'Д', а
иногда даже 'YO'. Чтобы побороть это, можно сделать свой тип терминала (в debian
есть linux-koi8). Но гораздо проще и грамотнее поставить
cp866
шрифты и включить таблицу перекодировки. Последний шаг -
копирование карты клавиатуры. ru1 рассчитана на 102-кнопочную
клавиатуру без MicroSoft'овских клавиш.
Если версия вашего дистрибутива меньше 2.2, то вместо
console-tools
вам придется воспользоваться пакетом kbd
- в этом случае настройки будут следующие:
Вставьте в /etc/kbd/config
:
CONSOLE_FONT=Cyr_a8x16 CONSOLE_MAP=koi2alt.
Выполните команду
# cp /usr/share/keymaps/i386/qwerty/ru1.map.gz /etc/default.map.gz
с привилегиями пользователя root.
Установите пакет xfonts-cyrillic со второго CD. Затем выполните команду
# ln /usr/X11R6/lib/X11/fonts/cyrillic /usr/X11R6/lib/X11/fonts/local
Теперь загрузите XF86Setup и скажите, что хотите
Russian
клавиатуру. Если вы не хотите пользоваться xdm, то
в /etc/inittab
измените id:2:initdefault:
на
id:1:initdefault:
. Иначе, вам надо будет вставить строчку
. /etc/environment export LANG
в начале инициализационного сценария xdm
(/etc/init.d/xdm
). Затем в файле
/etc/X11/xdm/xdm-config
в конце вставьте строчку
DisplayManager.exportList: LANG
Зачем создавать символическую ссылку на
/usr/X11R6/lib/X11/fonts/cyrillic
? Дело в том, что
XF86Setup если видит каталог
/usr/X11R6/lib/X11/fonts/local
, то ставит его на первое место в
секции "Files" файла /etc/X11/XF86Config
.
Зачем делать такие сложные выкрутасы с xdm? Чтобы xdm воспринял русскую локаль.
Этот раздел является сильно сокращенной версией (только кириллизация)
Slackware-7-INSTALL-RUS.HOWTO
(с) 1999 Вячеслава Калошина
(multik@sw.ru, multik@istu.edu)
Для кириллизации следует выполнить следующие действия:
/etc/rc.d/rc.font.sample
в rc.font и
добавить следующее содержание
setfont Cyr_a8x16 mapscrn koi2alt for n in 1 2 3 4 5 6; do echo -ne "\033(K" > /dev/tty$n done loadkeys ru.map
.inputrc
следующего содержания в каталог
/etc/skel
$if Bash set convert-meta off set output-meta on set input-meta on set show-all-if-ambiguous on "\e[1~" beginning-of-line "\e[2~" " " "\e[3~" delete-char "\e[4~" end-of-line "\e[C" forward-char "\e[D" backward-char "\e[A" previous-history "\e[B" next-history "\e[21~": "exit\C-m" # F10 - Exit from shell $endif
exit
.
/etc/profile
следует добавить export LANG=ru_RU.KOI8-R export NLSPATH=/usr/share/locale/ru_RU/ export LESSCHARSET=koi8-r
/usr/share/locale/ru_RU/
.
cd /usr/share/locale localedef -c -f /usr/share/i18n/charmaps/KOI8-R -i \\ /usr/share/i18n/locales/ru_RU \\ ru_RU.KOI8-R ln -s ru_RU.koi8r ru_RU.KOI8-Rсимволами
\\
обозначено продолжение строки - эти строчки
надо вводить в одну строку
locale.alias
-
добавить строчку ru ru_RU.KOI8-R
Все, Slackware на нижнем уровне русифицирована.
Делайте так же, как описано в разделе X Window - настройка ничем от стандартной настройки не отличается.
Но можно поступить как советует Вячеслав Калошин (хотя этот способ не очень-то и правильный, но тоже работает):
Скопируйте файл .Xmodmap в свой домашний каталог. Этот файл обеспечит ввод русских букв по правой кнопке Alt.
Проверьте в /etc/XF86Config
, секцию "Keyboard", добавьте туда
строчку XkbDisable
, иначе вышеприведенный способ русификации не
будет работать.