Библиотека сайта rus-linux.net
Red Hat Linux 8.0: проблемы кириллизации консоли
[Валентин Синицын
(Valentine.Sinitsyn@usu.ru)
30 сентября компания Red Hat, Inc. выпустила восьмую версию своего дистрибутива Linux. Как известно, "точка-ноль" дистрибутивы приносят не только новые возможности, но и новые проблемы... Не обошла сия печальная доля и Red Hat Linux 8.0. Цель этой статьи - помочь
Вам обойти "подводные камни" в процессе русификации консоли (далее под этим
термином мы будем понимать экран монитора в текстовом режиме, отодвигая таким
образом клавиатуру на второй план). Азбука кириллизацииРассмотрим схематически процесс вывода на экран некоторого символа "x":
Для кириллизации консоли в Linux используются два конкурирующих пакета:
kbd и consoletools. Последний применялся
в Red Hat версий 6.x-7.x, в более ранних и более поздних используется kbd.
Оба пакета имеют сходную функциональность. Все необходимые для работы этих
пакетов файлы хранятся в директории Рассмотрим теперь, как организован процесс русификации в Red Hat 8.0.
В первую очередь обратимся к файлу
rc.sysinit выполняет /etc/sysconfig/i18n ,
после чего происходит запуск скрипта /sbin/setsysfont , загружающего
шрифт и указанные таблицы перекодировки. Одновременно устанавливается клавиатурная
раскладка, имя которой хранится в файле /etc/sysconfig/keyboard (переменная
KEYTABLE).
Теперь, когда мы представляем себе общую схему русификации консоли, рассмотрим два конкретных способа научить Red Hat говорить по-русски. Путь первый, новаторскийПредпочтительной кодировкой в Red Hat 8.0 является UTF-8. Устанавливаемые по умолчанию шрифт "latarcyrheb-sun16" и локаль "en_US.UTF-8" позволяют корректно отображать символы латинского, русского и арабского алфавитов, а также иврита. Обратите внимание, что для многобайтовых UTF-локалей не столь важно, к какому языку они относятся: единственным ощутимым изменением при использовании "ru_RU.UTF-8" будет смена формата представления даты, времени, валюты и языка интерфейса некоторых программ (собственно, UTF-8 и Unicode и были созданы для того, чтобы обеспечить единообразие работы с любым алфавитом). Таким образом, если Вы собираетесь русифицировать консоль Red Hat в UTF-режиме, Вам можно позавидовать - всю необходимую работу за Вас уже проделали разработчики дистрибутива. И посочувствовать: Вам это особенно не поможет.Разъясним последнее утверждение. Используемый по умолчанию шрифт уже содержит символы кириллицы, а консоль работает в режиме UTF, поэтому символы русского алфавита должны выводиться без дополнительных усилий. К сожалению, в данной схеме возникает неприятный побочный эффект - сильно затрудняется вывод данных в не-UTF кодировке (например KOI8-R). И если с кириллицей в именах файлов на vfat-разделах справиться достаточно легко (в параметрах монтирования в /etc/fstab необходимо указать "codepage=866,iocharset=utf8" вместо
традиционного "codepage=866,iocharset=koi8-r"), с русскоязычными документами
придется основательно повозиться: Midnight Commander 4.5.55 не умеет перекодировать
в UTF-8 "на лету". Кроме того, некоторые приложения могут некорректно работать
в UTF-локали, поскольку не поддерживают многобайтовые кодировки (за примером
далеко ходить не надо - взять все тот же Midnight Commander). В других программах
могут пропасть символы псевдографики. В довершение всего, консоль теряет
возможность отображать цвета с кодом больше 7 (т.е. все "яркие"), так что
файлы и директории на панелях MC оказываются совершенно неразличимыми. Если
все это Вас не смущает, Вам остается только поставить соответствующую раскладку
клавиатуры (например, ua-utf), и - поздравляем! Ваша консоль успешно русифицирована.
Путь второй: старый, проверенныйДанный способ является своеобразным "шагом назад", поскольку подразумевает, что Вы будете использовать устаревшую кодировку KOI8-R вместо современной UTF. Если Вы занимались русификацией предыдущих версий Red Hat,часть нижеизложенного будет Вам знакома. Остальные читатели в случае необходимости могут обратиться за детальной информацией к Cyrillic-HOWTOИтак, попробуем применить хорошо известное решение: SYSFONT="Cyr_a8x16" и SYSFONTACM="koi2alt" (о его плюсах написано все в том же HOWTO). К сожалению, в таком виде оно не работает. Причина кроется в скрипте /sbin/setsysfont ,
который почти не менялся со времен consoletools. Любой заглянувший в него
не может не обратить внимания на вопиющую дискриминацию - для kbd (setfont)
не поддерживается переменная SYSFONTACM! Я отправил сообщение
об этой ошибке (включая исправленную версию сценария) на bugzilla.redhat.com, исправление должно появиться в initscripts 6.96-1 или более поздней версии. После исправления этой ошибки (например, путем
скачивания моей
версии setsysfont) и установки вашей любимой клавиатурной раскладки (что-нибудь
типа ru*, но никак не *-utf!) не забудьте удалить подстроку "UTF-8" из имени
локали, поскольку иначе консоль переключится в режим UTF и откажется принимать
Вашу KOI8-R.После всех этих манипуляций файл /etc/sysconfig/i18n будет иметь
следующий вид:
LANG="en_US"
Если Вашей целью было создание "пан-европейской" версии Linux (это когда
русские буквы отображаются, но все общение с системой происходит на английском
языке), Вас опять можно поздравить. Если нет - читайте дальше.
На мой взгляд, наиболее приемлемым вариантом русификации является "пан-европейский" KOI8-R. UTF-режим, безусловно, удобен, но еще недостаточно отлажен. Думается, что им вполне можно будет пользоваться в версиях 8.2-8.3. Полная русификация в не-UTF режиме - слишком трудоемкая операция. Если русскоязычный интерфейс для вас превыше всего, имеет смысл обратить внимание на KDE, благо с ее русификацией особых проблем не возникает. Автор выражает благодарность Шабунио Ю.А. за ценные идеи и плодотворную дискуссию. [ опубликовано 21/11/2002 ] |