|
| ||||||||||||
| ||||||||||||
|
2005 г.
Настраиваем русский Unicode во FreeBSDВалерий Моторин aka black_wolf От редактора: эта статья первоначально была опубликована на двух сайтах - на BDSPortal и unix.ginras.ru, причем тексты по ряду причин оказались не вполне идентичными. Здесь дается версия с unix.ginras.ru, с некоторыми редакторскими комментариями и дополнениями. Небольшое вступлениеНа форумах по Unix-тематике происходит много споров на тему "А нужен ли unicode Unix-системам?". Но чёткого ответа эти споры до сих пор так и не дали. Сделаем простой вывод: раз есть такая кодировка, значит она кому то нужна. Я не буду рассматривать её достоинства или недостатки, не буду склонять к тому, чтобы срочно все переходили на utf, а просто поделюсь своим опытом перехода на unicode в системе FreeBSD. Опять же сразу оговорюсь что данная мной методика не является обязательной в исполнение каждого пункта статьи, а с успехом может быть заменена другими методами решения возникших вопросов. Если посмотреть на дистрибутивы Linux, то там уже довольно удачно unicode применяеться в качестве основной кодировки таких дистрибутивов, как Suse, Red Hat/Fedora и некоторых других. Остальные создатели дистрибутивов посматривают в эту сторону, но пока не все спешат с переходом на unicode по умолчанию в системе, хотя полная поддержка utf-локализации обеспеченна практически во всех Linux-дистрибуивах. До сей поры unicode как-то обходил стороной BSD-системы. Но прогресс, так сказать, не стоит на месте, и в недавних релизах BSD-систем (FreeBSD, DragonFlyBSD, NetBSD) появилась в общем-то полная поддержка utf-локализации. Остановимся ее воплощении в самой популярной из этих ОС - FreeBSD (на момент создания статьи - версии 5.3). Но я думаю, то же самое может быть применено и в других BSD-системах. Поставим для себя такую цель: работать во FreeBSD так, чтоб была обеспеченна полная руссификация, причём в unicode. Unicode в консоли и руссификацияВот тут мы наступаем на первые грабли. Для начала, что бы не морочить голову, делаем руссификацию в точности как описанно в HandBook - не больше и не меньше. А как же unicode? Вот тут сразу придётся огорчить читателя, что консоль FreeBSD пока не совсем готова к принятию unicode, а для нормальной работы вам придёться использовать старый добрый koi8-r (или любую другую 8-битную кодировку). Причин здесь несколько, но скажу лишь про одну из основных. Для для того чтобы реально попробовать unicode в консоли FreeBSD, нужны map-файлы (файлы кодировок ввода/вывода символов на консоль). Просто посмотрим в каталоги Unicode и ИксыПо простому называемые Иксы давно готовы к принятию юникода. Собственно, с ними и будем работать. Конечно, различие кодировок в консоли и Иксах может вызывать противоречивые чувства у многих (типа локаль должна быть едина), но, как говорится, и здесь можно найти свои преимущества. Cама локаль UTF8 идёт во FreeBSD начиная с версии 5.2, но если вдруг не окажется у вас по каким либо причинам, то её можно установить из портов - Оговорюсь сразу, что у меня оболочка Собственно, раз мы будем работать с unicode в Иксах, то задаём переменные для реализации юникодной локали в домашнем каталоге, в файле export LANG='ru_RU.UTF-8' export LC_ALL='ru_RU.UTF-8' exec startfluxbox Конечно, fluxbox может быть заменён на любой другой менеджер. Мои корреспонденты писали, что что переменную cd /usr/X11R6/lib/X11/fonts/TTF mkfontscale mkfontdir fc-cache И проверьте, что в Иксовые терминалыНе во всех терминалах ввод/ввывод русского языка при локали unicode проходит нормально, лучше для этого под рукой иметь терминалы с умолчательной поддержкой UTF-8. Нормальные терминалы, поддерживающие unicode-ввод русского с клавиатуры и вывод сообшений на экран терминала по-русски - Aterm*background: black Aterm*foreground: #CECECE Aterm*scrollBar: true Aterm*loginShell: true Aterm*saveLines: 3000 Aterm*transparent: true Aterm*transpscrollbar: true Aterm*tintingType: true Aterm*tinting: #a07040 Aterm*shading: 60 Aterm*fade: 90 Aterm*title: aterm Aterm*iconName: aterm Aterm*font: -*-terminus-medium-*-*-*-*-*-*-*-*-iso10646-1 Aterm*boldFont: -*-terminus-medium-*-*-*-*-*-*-*-*-iso10646-1 Aterm*geometry: 80x24 Aterm*termName: aterm Оконные менеджерыВ принципе, подойдут все сейчас популярные менеджеры. Опробованны в юникоде: KDE, XFCE, wmaker, семейство боксов - openbox, blackbox, hackedbox. Проблем в работе с unicode у меня ни в одном не возникло. Я уверен что и с Gnome будет аналогично. С установленным из портов $ ./configure \ --prefix=/usr/X11R6 \ --enable-xinerama \ --enable-shape \ --enable-slit \ --enable-kde \ --enable-gnome \ --enable-interlace \ --enable-nls \ --enable-timed-cache $ gmake $ gmake check $ gmake install После этого - проблем никаких. Midnight CommanderСамый популярный файл-менеджер вызвал больше всего головной боли. Обычный устанавливаемый Путь 1 (юниксоида):
Путь 2 (наменьшего сопротивления): Установить вместо обычного Путь 3 (радикальный): Перебороть в себе тягу к Работа с консольными приложениями в икс-терминалахТе приложения, которые нормально поддерживают по умолчанию unicode, работают более-менее сносно в вышеуказанных юникодных терминалах. Например такое приложение как alias jed='LANG=ru_RU.KOI8-R; jed' ну и далее в том же духе для нужного вам приложения. Работа с иксовыми приложениямиC простыми иксовыми и QT-приложениями проблем не замечено. Но вот в GTK - в некоторых приложениях могут вместо букв быть квадратики или кракозябры (например, в меню xmms). Лечиться так: создаём в домашнем каталоге файл
style "gtk-default" {
fontset = "-*-Nimbus Sans L-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
-*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
-*-r-*-iso10646-1,*"
}
class "GtkWidget" style "gtk-default"
И всё - вместо квадратиков русские буквы, с размером шрифта можно поиграть. Вот вроде и всё. Я остался работать в unicode под FreeBSD , пока проблем не наблюдаю. Дополнение редактора: как резонно заметил Валерий, им описан лишь один из возможных путей unicode-локализации FreeBSD. Мной был опробован другой способ - через переопределение класса пользователя, который я вкратце и опишу. Правда, я делал это в DragonFlyBSD - но в данном аспекте разницы между этими системами нет ни малейшей. Для начала редактируем файл /etc/login.conf, а именно: вносим в него (например, после описания класса russian) строки
# Russian Users Accounts with UTF-8.
#
rus-utf|Russian Users Accounts:\
:charset=UTF-8:\
:lang=ru_RU.UTF-8:\
:lc_all=ru_RU.UTF-8:\
:tc=default:
Теперь причисляем пользователя к новообразованному классу: % pw usermod юзер_имя_рек -L rus-utf И... и, собственно, все: радуемся utf'ной локали. Единственно, при этом мы утратили возможность работы с кириллицей в консоли - не будем забывать, что дело не только в отсуствии screenmap'ов доя unicode, но и всего остального. А главное - в 8-битном внутреннем представлении символов, свойственном А что мы приобрели? Да я и сам путем не знаю, что. Потому что работать с текстами в UTF-8, скажем, в KDE, можно было и так, вне зависимости от системной локали. Работать с unicode, как уже было сказано, все равно не получается. Прочие приложения - честно говоря, не увидел смысла с ними разбираться. И потому быстро вернулся на локаль родную, бомжовскую,,, Так что тема unicode в BSD-системах остается открытой. Если есть что сказать по этому вопросу - с удовольствием опубликуем. |
|
CITForum © 1997–2025