30 сентября компания Red Hat, Inc.
выпустила восьмую версию своего дистрибутива Linux. Как известно, "точка-ноль"
дистрибутивы приносят не только новые возможности, но и новые проблемы...
Не обошла сия печальная доля и Red Hat Linux 8.0. Цель этой статьи - помочь Вам обойти "подводные камни" в процессе русификации консоли (далее под этим термином мы будем понимать экран монитора в текстовом режиме, отодвигая таким образом клавиатуру на второй план). Мы начнем с "незыблемых основ" русификации Linux, после чего перейдем к тонкостям, относящимся только к Red Hat 8.0. Поскольку каждое приложение имеет свою специфику, мы ограничимся, пожалуй, самым популярным из них - файловым менеджером Midinght Commander. Русификация остальных программ происходит либо автоматически (ls, rpm и другие "простые" утилиты), либо не представляет существенной проблемы (lynx). В любом случае, подробную информацию по каждой конкретной программе (а также многое другое) всегда можно найти в Cyrillic-HOWTO Е.М. Балдина. Азбука кириллизацииРассмотрим схематически процесс вывода на экран некоторого символа "x":
Для кириллизации консоли в Linux используются два конкурирующих пакета: kbd и consoletools. Последний применялся в Red Hat версий 6.x-7.x, в более ранних и более поздних используется kbd. Оба пакета имеют сходную функциональность. Все необходимые для работы этих пакетов файлы хранятся в директории /lib/kbd: /lib/kbd/consolefonts (файлы шрифтов), /lib/kbd/consoletrans (ACM), /lib/kbd/unimaps (SFM) и /lib/kbd/keymaps (клавиатурные раскладки). В дальнейшем по понятным причинам будем предполагать, что используется пакет kbd. Утилита setfont из этого пакета позволяет как загружать шрифты, так и устанавливать таблицы перекодировки ACM (параметр командной строки -m) и SFM (-u). Параметры можно комбинировать. Так, например, команда setfont Cyr_a8x16 -m koi2alt устанавливает шрифт Cyr_a8x16 и ACM-таблицу koi2alt. Рассмотрим теперь, как организован процесс русификации в Red Hat 8.0. В первую очередь обратимся к файлу /etc/sysconfig/i18n. В нем определяются значения следующих переменных:
Теперь, когда мы представляем себе общую схему русификации консоли, рассмотрим два конкретных способа научить 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, благо с ее русификацией особых проблем не возникает. Автор выражает благодарность Шабунио Ю.А. за ценные идеи и плодотворную дискуссию. |