Русификация консоли
Для того чтобы русифицировать консоль, необходимо настроить как правиль-
ный вывод символов на экран, так и ввод их с клавиатуры. Начнем с вывода
символов.
Как Linux осуществляет вывод какой-либо строки на экран? Сначала строка
пропускается через так называемую screen map (карту соответствия), переко-
дирующую выводимые символы в соответствии с используемым терминалом
шрифтом. Это позволяет, в принципе, использовать различные кодировки,
не изменяя шрифт на консоли.
В Linux и прочих Unix-подобных системах в качестве основной русской коди-
ровки используется кодировка KOI8-R. У этой кодировки есть много преиму-
ществ по сравнению с используемыми в других системах IS08859-5 и кодовыми
страницами 1251 и 866, но мы не будем их здесь обсуждать.
Итак, что же нужно сделать, чтобы настроить вывод символов в кодировке
KOI8 на экран?
Во-первых, мы должны загрузить русский шрифт. Загрузка шрифта в Linux
выполняется при помощи команды setfont. В принципе, в комплект поставки
Linux входят KOIS-шрифты, но они весьма плохо выглядят, поэтому мы ис-
пользуем шрифт Суг_а8х16 в кодировке, соответствующей кодовой табли-
це 866.
В файл /etc/rc.d/rc.font добавьте строку ,
setfont Суr_а8х16
или, если команда setfont уже присутствует в этом файле, замените указанный
после нее шрифт на Суr_а8х16.
Во-вторых, мы должны установить необходимую карту соответствия, которая
позволит на лету перекодировать символы из KOI8 в 866 для их корректного
вывода на экран при помощи установленного шрифта. Установка карты соот-
ветствия выполняется при помощи команды mapscrn.
В файл /etc/rc.d/rc.font добавьте строку
mapscrn koi2ait
Однако того, что мы сделали, еще не достаточно. На каждой консоли, на
которой вам нужны русские буквы, карта соответствия должна быть активизи-
рована. Для этого на соответствующую консоль должна быть выведена ?маги-
ческая последовательность? ESC-(K. Для вывода этой последовательности вы
можете использовать команду
echo -ne '\033(К'
Параметр -п запрещает вывод символа новой строки по окончании работы
команды, параметр -е указывает, что вместо выражений вида \ххх должен
выводиться символ с восьмеричным кодом ххх. В данном случае будет выведен
символ с кодом 033 ? то есть ESC.
Конечно, вы можете каждый раз вводить эту команду вручную на той консоли,
на которой вам нужны русские буквы, но этот процесс можно автоматизи-
ровать.
В файл /etc/rc.d/rc.local добавьте следующий текст:
for i in 1 2 3 4 5 6
do
echo -ne '\033(К' > /dev/tty$i
done
Эта последовательность команд определяет цикл (for ... do ... done), в кото-
ром переменная i последовательно принимает значения 1-6 (i in 1 2 3 4 5 6).
В теле цикла выполняется вывод нужной ?магической последовательности?
ESC-(K на консоль с номером i (/dev/tty$i, знак $ указывает, что вместо $i
должно быть подставлено значение переменной, то есть последовательно 1,2,
...,б).
На этом настройка вывода на экран завершена.
Для того чтобы вы могли не только видеть на экране русские буквы, но и иметь
возможность вводить их с клавиатуры, необходимо загрузить при помощи ко-
манды loadkeys нужную клавиатурную раскладку.
В файл /etc/rc.d/rc.local добавьте команду
loadkeys ru1
Раскладка ru1 позволит вам вводить символы в кодировке KOI8, переключаясь
между латинской и русской раскладками при помощи правой клавиши Alt.Теперь вы
можете перезагрузить компьютер или просто вручную выполнить
описанные команды.
Однако на этом русификация консоли не закончена. Если вы попытаетесь
ввести что-либо русскими буквами непосредственно в командной строке, то у
вас, скорее всего, ничего не получится. Нам еще предстоит объяснить, как
трактовать русские символы, трем важным программам : bash, Is и less.
Начнем с bash - интерпретатора командной строки , той программы, которая
выводит приглашение $ (или #, если вы работаете от root) и ожидает ввода
команд. Для управления поведением bash при использовании символов из второй
половины кодовой таблицы используется файл .inputrc, который находится в
домашнем каталоге пользователя.
Создайте в своем домашнем каталоге файл .inputrc, сoдержащий следующие
строки:
set meta-flag on
set convert-meta off
set output-meta on
Выйдите из системы (введя logout) и войдите в нее снова. Все, теперь вы
можете вводить русские буквы в командной строке и даже создавать файлы с
русскими именами. Попробуйте ввести :>"Привет, мир", чтобы создать пустой
файл с именем Привет, мир.
Но что это? При попытке просмотреть содержимое каталога, в котором создан
файл с русским именем, вместо русских букв написаны какие-то числа и вопро-
сительные знаки? Для того чтобы команда Is корректно отображала русские
имена файлов, сделайте следующее.
В конец файла /etc/profile добавьте строку
alias ls='ls -N $LS_OPTIONS'
Вы можете и не делать этого, а просто вызывать Is с ключом -N, если хотите
видеть русские имена файлов. Но точно я не гарантирую что это будет работать -
при установне своего линукса у меня были проблемы - приходилось использовать
другие опции. В общем, если не получится - поэксперементируйте с опциями ls.
Наконец, последняя программа, которую мы хотим образумить, это less -
программа постраничного просмотра файлов. Чтобы less корректно выводила
русские буквы, необходимо установить переменную окружения LESSCHARSET.
В конец файла /etc/profile впишите строчку
export LESSCHARSET=latin1
На этом русификация консоли закончена. Для того чтобы сделанные нами в
файле /etc/profile изменения вступили в силу, вы должны выйти из системы
и войти в нее снова.
Русификация Xwindow System
Pусские шрифты KOI8-R на XFree86
В современных дистрибутивах они скорее всего уже стоят. Первым делом (на работающем X сервере)
запустите :
$ xlsfonts -fn "*-koi8-r"
Если список не пустой - примите наши поздравления :-)
Начиная с версии XFree86 3.3.2 русские фонты(шрифты) cronyx-* входят прямо в дистрибутив XFree.
Если фонтов нет -- их нужно установить. Для lime Hat просто поставьте пакет
XFree86-cyrillic-fonts-XXXX.rpm . Фонты установятся в /usr/X11R6/lib/X11/fonts/cyrillic .
Далее нужно подключить шрифты к X Window. Убедитесь, что в файле /etc/X11/XF86Config прописан
путь :
Section "Files"
...
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
...
EndSection
Путь с cyrillic лучше всего поставить первым. Перезапустите X сервер и проверьте
командой : xlsfonts -fn "*-koi8-r" .
Хорошим решением также будет использование фонт-сервера. Во-первых, он может быть один на
всю организацию, а во-вторых в современные фонт-серверах можно использовать шрифты TrueType.
Для lime Hat фонт-сервер xfsft входит в пакет Xfree86-xfs.
Существует два основных способа русификации клавиатуры X :
XKB, применяющийся в современном X11R6
xmodmap, применявшийся в X11R5
При русификации X 3.3.x через XKB в /etc/X11/XF86Config должно быть прописано:
Section "Keyboard"
...
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "ru"
XkbOptions "grp:shift_toggle"
EndSection
Для X 4.0.x
Section "InputDevice"
...
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc101"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:shift_toggle"
EndSection
В зависимости от клавиатуры опция Model может быть "pc101", "pc104" или "pc105", а
комбинации переключения:
grp:toggle правый Alt (с "фиксацией")
grp:caps_toggle Caps_Lock
grp:shift_toggle два Shift
grp:ctrl_shift_toggle Control+Shift
grp:ctrl_alt_toggle Control+Alt
Для 4.0.x добавились новые :
grp:alt_shift_toggle Alt+Shift
grp:menu_toggle Menu (модель должна быть pc104, pc105)
В kde начина с 2.2.1 можно переключатся с помощью ctrl+alt+K если включен выбор раскладки
в control center на закладке peripherals.
Общие проблемы
Смонтировать диск, чтобы русские имена файлов были видны
Для vfat примерно так (cтрочка из /etc/fstab/):
/dev/hda5 /mnt/d vfat noexec,rw,umask=002, codepage=866, iocharset=koi8-r,
gid=100 0 0
(в одну строчку)
Потом mount /mnt/d. Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые
страницы (возможно, в виде модулей /lib/ modules/`uname -r`/fs/nls_*) - CP866 и KOI8-R, так
что возможно (хотя скорее всего нет) ядро придется перекомпилировать.
Для CD, содержащего файлы с русскими именами:
$ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom
Параметр codepage для isofs не нужен, в файловой системе JOLIET имена файлов хранятся в UNICODE.
Смысл этих опций можно узнать в 'man mount' или в документации исходников ядра
/usr/src/linux/Documentation/filesystems/ или /usr/doc/ kernel/filesystems/
увидеть русские буквы в именах файлов на диске Samba
Добавить в /etc/smb.conf
[global]
character set = koi8-r
client code page = 866
preserve case = yes
short preserve case = yes
перекодировать из DOS/Win кодировки в KOI8-R
Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Наиболее широко
распространены iconv (входит в поставку glibc(т.е. есть почти на всех дистрибутивах))
и GNU recode ( ftp://prep.ai.mit.edu/pub/gnu/recode/)
$ iconv -f866 -tKOI8-R -o infile
$ recode CP1251..KOI8-R winfile.txt
в mc увидеть pусские буквы
F9 - options - display bits - Full 8 bit
telnet
Если возникают проблемы с вводом русских символов, надо написать файлик ~/.telnetrc
со следующей строкой:
DEFAULT set outbinary
Вы можете встретить проблемы при работе в кодировке Win-1251 -- не передается маленькая
русская буква "я" 0xff. У протокола TELNET 0xff -- это первый символ управляющей
последовательности. Дабы передать собственно "я", нужно его удваивать : 0xff, 0xff.
В KOI8-R такой проблемы нет.
русифицировать TeX под koi-8
TeX и LaTeX во всех современных дистрибутивах говорят по-русски с раздачи. В этом случае
имеется документ cyrguide.*, который и содержит развернутый ответ на вопрос о русификации TeX.
Переносы не всегда работают "из коробки", иногда надо поправить language.dat, и пересобрать
форматы. Вот что пишет Alex Nikiforov:
Если уж о последних версиях, то в RH-6.0 с tetex 0.9 у меня получилось так:
$ texconfig
выбрать
hyphenation -> latex
раскомментировать russian
Добавить в LaTeX файлах
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[english,russian]{babel}
и в файле можно переключаться между русским и английским командами \Russian и \Engish
Что бы добавить форматы из cyrplain набора в texconfig выбрать FORMATS и добавить
cyrtxinf tex language.dat cyrtxinf.ini
для русского texinfo. Аналогично для cyrblue и cyramstx.
Что бы добавить формат cyrtex ( русский TeX ) проще в каталоге web2c выполнить:
initex '\input cyrtex.ini \dump'
и бросить символическую ссылку с именем cyrtex на tex ( например в /usr/bin )
Что бы переключится на русский в этих plain форматах использовать команду
\language N
где N - номер, под которым числится русский язык в получившейся раскладке.
|