Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Red Hat Linux 9 Cyrillic Edition
с точки зрения пользователя.

(C) В.А.Костромин, kos @ rus-linux dot net

Часть 3. Русификация

3 октября 2003 г., последние изменения внесены 30 октября 2003 г.

Предыдущая заметка: "Первый запуск"

В этой части я собираюсь рассмотреть вопросы русификации системы, начиная с того, что мы имеем в исходной системе (то есть в том ее варианте, который был рассмотрен в предыдущей заметке), затем описать процесс установки пакетов русификации с четвертого дистрибутивного диска, а потом уже исследовать, что изменится после установки этих пакетов. Напомню, что при первоначальной установке в качестве основного языка системы я выбрал English (USA), а русский язык задал в качестве второго языка. Но при первом запуске системы указал, что и в этой и в последующих сессиях я предпочитаю работать с русским языком. Эти факты стоит иметь в виду в дальнейшем.

Итак, начнем с исследования того, каково состояние с русификацией в той системе, которая установлена с трех первых дисков дистрибутива. А для этого повторим те действия, которые я описал в третьей и четвертой заметках предыдущей серии.

После того, как в процессе первого запуска системы после инсталляции на экране моего компьютера появилась красивая картинка графической среды KDE, я переключился во вторую виртуальную консоль и попробовал вводить русские символы. Во-первых, оказалось, что в консоли переключение осуществляется правой клавишей Ctrl, а не двумя клавишами Shift, как в графическом режиме. И, во-вторых, после переключения вместо русских букв на экране появляются какие-то совершенно непонятные символы, лишь отдаленно напоминающие русские буквы.

Вспоминаю (я писал об этом в предыдущей серии), что загружаемая при старте системы раскладка клавиатуры определяется файлом /etc/sysconfig/keyboard. Точнее, при загрузке системы отрабатывает инициализационный скрипт /etc/rc.d/rc.sysinit, который среди прочих действий обеспечивает загрузку системного шрифта и клавиатурной раскладки. Для загрузки системного шрифта  вызывается скрипт /sbin/setsysfont, который считывает установки, заданные в /etc/sysconfig/i18n и вызывает команду /bin/setfont, обеспечивающую загрузку шрифта в знакогенератор дисплея и загрузку таблицы SFM в драйвер экрана. Загрузка клавиатурной раскладки осуществляется непосредственно из скрипта /etc/rc.d/rc.sysinit путем вызова команды /bin/loadkeys, аргументы для которой берутся из файла /etc/sysconfig/keyboard.

Смотрю, что записано в упомянутых конфигурационных файлах. В файле /etc/sysconfig/i18n прописаны следующие значения:

LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU.ru"
SYSFONT="latarcyrheb-sun16"

В файле /etc/sysconfig/keyboard у меня оказываются прописаны две строки:

KEYBOARDTYPE="pc"
KEYTABLE="ru-ms".

Делаю попытку с помощью команды loadkeys загрузить другие варианты раскладки из имеющихся в каталоге /lib/kbd/keymaps/i386/qwerty (а всего их там имеется девять: загруженная у меня ru-ms, ru-cp1251, ru-yawerty, ru, ru1, ru2, ru3, ru4, ru_win). Но ситуация после этого стала только хуже - вместо выдачи на экран в русском режиме хоть каких-то символов, нажатия на клавиши стали приводить к тому, что курсор в командной строке стал прыгать совершенно неописуемым образом, залезая даже на символы приглашения. Более того, после этих моих экспериментов я уже не смог вернуться в седьмую виртуальную консоль, в которой работает графическая оболочка. И вообще переключение между виртуальными консолями с помощью клавиш Ctrl-Alt-Fx перестало работать. Пришлось перезагрузиться.

После перезагрузки первым делом проверяю, имеется ли возможность переключения между виртуальными консолями. Все в порядке, переключение работает нормально. Следовательно, нарушение этой функции явилось прямым следствием ввода символов в русском регистре. Я там много раз пытался что-то набрать и неоднократно, после ввода каких-то символов, нажимал клавишу Enter, так что какая-то из этих псевдо-команд сработала таки. Возвращаюсь в графический режим и запускаю в терминале команду redhat-config-keyboard. Отмечаю для себя, что если в прошлый раз (после установки пакетов русификации) я смог с помощью команды изменить раскладку клавиатуры на "Русская (utf8)", то теперь среди предлагаемых этой командой раскладок раскладки "Русская (utf8)" не оказывается. Да и откуда ей взяться, если ее нет в каталоге /lib/kbd/keymaps/i386/qwerty. Вероятно, она устанавливается из пакетов обновления. Но проверку этого пока откладываем и идем дальше.

Проверяю еще, что дает команда locale. Оказалось, что все переменные локализации установлены в значение "ru_RU.UTF-8".

В общем, по сравнению с прошлым разом, когда мне все же удалось добиться корректного отображения символов русского языка в консоли, единственное существенное отличие состоит в отсутствии раскладки "Русская (utf8)".

Между прочим, в окне терминала в графической оболочке, с русским языком все в порядке. Может быть в этом и нет ничего удивительного, поскольку механизмы работы с клавиатурой в консольном и графическом режимах разные. Да, когда я сказал "с русским все в порядке", я имел в виду чисто консольный режим в терминале. Естественно, что Midnight Commander как не умел редактировать файлы на русском языке, так и не умеет. Но меню свое на русском выдает без проблем. Так что я продолжаю пользоваться им в окне терминала.

Как и прошлый раз выполняю команду cat > тест.utf и перебираю последовательно все клавиши, переключившись в русский язык. Результат команды less тест.utf вполне соответствует тому, что я вводил. Команда ls тоже вполне корректно отображает имя файла "тест.utf".

Ну, что же, с исходным состоянием системы после установки ее английской версии вроде все более-менее ясно (если что-то еще замечу, дополню позже), пора уже вставить в дисковод четвертый диск дистрибутива.

Хотя после этого и появляется знакомое уже мне окно (рис. 3), однако в нем почему-то только 3 пункта меню вместо четырех, которые я видел "в прошлой жизни".


Рис. 3. Окно запуска программ обновления и русификации.

Отсутствует пункт "Обновление пакетов". Но именно этот пункт меня интересует больше всего, потому что русификация в автоматическом режиме приводит к переводу системы на KOI8-R, а такая перспектива меня не прельщает. Я по-прежнему хочу иметь систему, работающую в UNICODE. Просмотрев скрипт /mnt/cdrom/autorun, обнаруживаю, что он написан на Python, которого я не знаю. Но тем не менее, просмотрев его текст, обнаруживаю, что перед выводом клавиши "Обновление пакетов" происходит проверка файла /etc/sysconfig/firstboot. Очевидно, разработчики решили, что во время первого запуска обновление будет проведено, и ни к чему показывать эту кнопку во время следующих запусков. Рядом с надписью "Update packages" стоит команда update, так что прихожу к заключению, что должна быть где-то команда (то бишь файл) с таким именем. И, действительно, в каталоге /mnt/cdrom/Russification/bin такая команда находится. Она оказалась обычным bash-скриптом. Но разбираться с его содержанием я не стал, и от его запуска тоже решил воздержаться. Я же знаю, как повторить первый запуск системы (смотрите предыдущую заметку).

Удаляю файл /etc/sysconfig/firstboot, выполняю команду chkconfig --level 5 firstboot on и перезагружаю систему. После этого вставка 4-го диска в привод приводит к появлению окна с четырьмя пунктами меню :


Рис. 4. Первый запуск окна обновления и русификации.

Щелкаю по кнопочке "Обновить пакеты в вашей системе". (Правда, предварительно приходится перезапустить команду autorun от имени суперпользователя.) Появляется дополнительный вопрос "Приступить к обновлению?" Конечно, да! Зачем переспрашивать? После подтвержения моего желания обновить пакеты открывается окно терминала, в котором выведена команда rpm -Uhv с длинным перечнем устанавливаемых пакетов, установка которых и начинается. После ее окончания окно терминала не закрывается, пока не будет нажата клавиша Enter. Если не спешить с этим действием, можно осмыслить, что же мы в итоге этой операции получаем (см. рис. 5).


Рис. 5. Перечень пакетов, устанавливаемых при обновлении системы с 4-го диска.

Как видите, установились демоны Samba и httpd, система печати cups (у меня и принтера то нет), сервер sendmail (я вообще-то привык без него обходиться), обновились библиотеки и ядро. Впрочем, представление о том, что именно обновляется, вы можете получить, если щелкните по кнопке "Просмотреть документацию по Red Hat Linux" и перейдете по ссылке "Дополнительное ПО, включенное в дистрибутив".

Можно отметить, что обновление пакетов привело к уменьшению объема свободного пространства на диске примерно на 100 МБайт.

Замечу также, что если перезагрузить систему после выполнения пункта "Обновление пакетов", то в меню загрузчика (у меня это GRUB) появляется дополнительный пункт "Red Hat Linux (2.4.20-13.9)". То есть ядро было обновлено. Но по умолчанию запускается первоначально установленное ядро 2.4.20-8. Чтобы запускалось новое ядро, запускаю в терминале root-консоль, нахожу файл /boot/grub/grub.conf и заменяю строку "default=1" на "default=0".

Теперь займемся русификацией. Но я не буду делать ее автоматом, попытаюсь сделать вручную. Для начала установлю пакет с раскладкой клавиатуры "Русская (utf)", вы помните, нам ее не хватало. Такую раскладку (не без труда) обнаруживаю в пакете /mnt/cdrom/Russification/RPMS/rus-locale-0.5-19.noarch.rpm. Ставлю этот пакет:

[root]# rpm -Uhv rus-locale-0.5-19.noarch.rpm

(Кроме раскладки из него ставится еще много файлов, но их назначение мне пока не ясно.) Теперь можно и выбрать эту раскладку с помощью команды

[root]# redhat-config-keyboard

после чего файл /etc/sysconfig/keyboard принимает следующий вид:

KEYBOARDTYPE="pc"
KEYTABLE="ru-utf".

Теперь во второй консоли после нажатия правой клавиши Shift на экране стали появляться нормальные русские буквы. Таким образом, в русификации консоли я, кажется, достиг того состояния, которое было в прошлый раз после проведения русификации в автоматическом режиме. Посмотрим теперь, какие еще пакеты имеются в каталоге /mnt/cdrom/Russification/RPMS/. Вот их полный список:

aspell-ru-0.3-4.noarch.rpm
dictd-server-1.5.5-11.i386.rpm
dict-korolew_ruen-0.8-3.noarch.rpm
dict-Mueller24-0.7-5.noarch.rpm
freefont-ttf-1-4.noarch.rpm
gdm-conf_koi8-8.1-3.noarch.rpm
latex-utf8-0.8-2.i386.rpm
less-378-9.i386.rpm
mozilla-ru-0.9-3.noarch.rpm
mpage-cyr-8.0-4.noarch.rpm
oohelp-ru-1.0-3.noarch.rpm
patch-2.5.4-16.i386.rpm
PSCyr-0.4-74.noarch.rpm
PSCyr-tex-0.4-74.noarch.rpm
redhat-config-language_koi8-8.1-6.noarch.rpm
rus-locale-0.5-19.noarch.rpm
tetex-latex-rus-0.1-10.noarch.rpm
ttfonts-ja-1.2-21.noarch.rpm
urw-fonts-koi8-1-4.noarch.rpm
XFree86-cyr_rfx-fonts-iso10646-0400-1.1-10.noarch.rpm
XFree86-cyr_rfx-fonts-iso8859-5-1.1-9.noarch.rpm
XFree86-cyr_rfx-fonts-koi8-r-1.1-9.noarch.rpm
XFree86-iso10646cyr-75dpi-4.2.1-3.noarch.rpm
xkbmap-cyr-9.0-2.noarch.rpm
xxkb-1.6.1-3.i386.rpm
Часть этих пакетов явно предназначена для русификации с кодировкой KOI8-R (что явно видно из их названия). Решаю такие пакеты НЕ ставить. Пакет rus-locale-0.5-19.noarch.rpm уже поставлен. Кириллические шрифты для XFree86, мне кажется, стоит поставить все, даже с koi8-r, поскольку они могут пригодиться, например, в браузере. Поэтому выполняю команду
[root]# rpm -Uhv XFree86-cyr_rfx-fonts-iso10646-0400-1.1-10.noarch.rpm 
XFree86-cyr_rfx-fonts-iso8859-5-1.1-9.noarch.rpm XFree86-cyr_rfx-fonts-koi8-r-1.1-9.noarch.rpm 
XFree86-iso10646cyr-75dpi-4.2.1-3.noarch.rpm 

Пакеты ставятся без проблем. А вот с установкой пакета ttfonts-ja-1.2-21.noarch.rpm торопиться не стоит, поскольку команда rpm -qpi ttfonts-ja-1.2-21.noarch.rpm сообщает, что содержит он ttf-шрифты для японского языка. Так как по японски я не очень-то, ставить этот пакет мне вроде ни к чему. Непонятно, почему этот пакет включен в набор пакетов для русификации. А вот пакет freefont-ttf-1-4.noarch.rpm поставить, наверное, необходимо, потому что он содержит True Type шрифты в кодировке Unicode. Далее решаю поставить пакет less-378-9.i386.rpm, поскольку хотя команда less и работает, но не зря же разработчики включили ее в пакеты русификации! Ну, а заодно решаю поставить имеющиеся среди пакетов русификации пакеты со словарями, программой aspell и пакеты русификации для Mozilla и OpenOffice. А поэтому выполняю команду

[root]# rpm -Uhv aspell-ru-0.3-4.noarch.rpm dictd-server-1.5.5-11.i386.rpm 
dict-korolew_ruen-0.8-3.noarch.rpm dict-Mueller24-0.7-5.noarch.rpm
 less-378-9.i386.rpm mozilla-ru-0.9-3.noarch.rpm oohelp-ru-1.0-3.noarch.rpm

Пакеты tex и latex я не ставил, поэтому мне вряд ли надо ставить пакеты PSCyr-tex-0.4-74.noarch.rpm, latex-utf8-0.8-2.i386.rpm и tetex-latex-rus-0.1-10.noarch.rpm.

Пакет patch-2.5.4-16.i386.rpm я решил поставить, несмотря на то, что команда patch уже и без того запускается вполне успешно. Поскольку имя этого пакета является просто ссылкой на обновленный пакет из каталога RedHat/RPMS, то, может быть, это какое-то улучшение в плане работы с Unicode!

Пакет mpage-cyr-8.0-4.noarch.rpm содержит поддержку кодировок koi8-r и Unicode для man-страниц, поэтому его решаю поставить. Но он при установке требует PSCyr>=0.4, поэтому выполняю команду

[root]# rpm -Uhv mpage-cyr-8.0-4.noarch.rpm PSCyr-0.4-74.noarch.rpm

Мы пока не рассмотрели только два пакета: xkbmap-cyr-9.0-2.noarch.rpm и xxkb-1.6.1-3.i386.rpm. По сообщению программы rpm -qpi первый из них содержит поддержку переключения между русским и английским для X Window, а второй - индикатор режима русский/английский для Xkb. Я решил эти пакеты не ставить, по крайней мере до тех пор, пока не пойму, что они необходимы.

На этом процедуру русификации я завершил. Для проверки я запустил OpenOffice.org Writer и вызвал справку. И успешно получил ее полностью на русском. Также успешно прошло и переключение на русский язык в процессе набора текста в OpenOffice.org Writer. Переключение это осуществляется двумя клавишами Shift, что меня даже порадовало. Если вы читали предыдущую серию моих заметок [2], вы помните, что после бездумной установки всех пакетов русификации мне не удалось найти клавиатурную комбинацию для переключения рус/лат. Я вынужден был переключаться с помощью щелчка мышкой по иконке в панели, а это довольно неудобно при наборе текста. Очевидно, что такой эффект дает установка одного из двух последних рассмотренных выше пакетов - xkbmap-cyr-9.0-2.noarch.rpm или xxkb-1.6.1-3.i386.rpm. Так что мое решение отказаться от их установки пока представляется мне правильным.

Можно еще отметить, что установка пакетов русификации в описанном выше варианте приводит к увеличению объема занятого пространства на диске примерно на 70 МБайт.

Достаточно ли выполненных действий для полноценной работы с русским языком, увижу в ходе последующей работы с системой. Поэтому к вопросу русификации я еще вернусь, после того, как немного поработаю с системой. Но это будут уже заметки по ходу дела, которые я буду делать в следующих статьях. А пока у меня есть желание заняться оптимизацией системы. Если для самых современных быстродействующих с немерянным количеством дисковой и оперативной памяти эти вопросы может быть и не так актуальны, то для моего старенького компьютера это очень важно. Поэтому я так увлекся минимизацией системы. А теперь посмотрю что можно выжать из аппаратуры ("Настройка работы с аппаратурой") и как оптимизировать программную часть "Оптимизация системы"

Следующая статья: "Настройка работы с аппаратурой"

Список литературы и ссылки.

  1. В.А.Костромин, "Linux для пользователя", изд. БХВ-Петербург, 2002 год, серия "Самоучитель", 650 стр.
  2. В.А.Костромин, "14 дней жизни одной операционной системы или впечатления об установке и настройке Red Hat Linux 9 Cyrillic Edition".