HOWTO ru RU.utf8 Gentoo way

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Содержание

[править] Введение

Статья описывает настройку системы и различных приложений для работы с русским языком.

PS: если вы хотите сохранить локаль отличную от русской и при этом включить поддержку русского языка то вам на страницу HOWTO easy way russian support.

[править] Шрифты

emerge terminus-font intlfonts freefonts cronyx-fonts corefonts artwiz-aleczapka-en kbd


Примечание: В принципе достаточно terminus-font, а остальное если только для полного счастья

[править] Создание локали

Последние полгода glibc собирается с ru_RU.UTF-8 уже "из коробки". Так что сначала проверьте, может у вас уже всё есть(необходимо наличие ru_RU.utf8):

Code: locale -a | grep ru
ru_RU
ru_RU.cp1251
ru_RU.koi8r
ru_RU.utf8

В случае, если у вас не собрана локаль, то можно ее создать вручную или пересобрать glibc.

1. Для создания локaли командой localedef вам потребуются права root'а.

localedef --no-archive -c -i ru_RU -f UTF-8 ru_RU.utf8

Обратите внимание на опцию --no-archive она указывает на то, что локаль не надо упаковывать в архив. Если вы забудете указать эту опцию, то после обновления библиотеки glibc вам придется повторить этот шаг снова.

По обсуждениям в форуме этой статьи можно заметить, что есть некоторые проблемы. Если команда locale выдаёт ошибки следующего вида:

Code: locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Тогда лучше определить локаль следующей командой localedef --no-archive -c -i ru_RU -f UTF-8 ru

2. В последних версиях glibc (glibc-2.4) у вас есть возможность определить список локалей, которые вы хотите использовать. Подробные инструкции здесь, а вкратце:

Файл: /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.KOI8-R KOI8-R
# То к чему стремимся
ru_RU.UTF-8 UTF-8
# Не помешает также
ru_RU.CP1251 CP1251
# добавьте необходимые кодировки для остальных локалей

Пересобираем glibc (необходимо установить USE="userlocales" - см. ссылку выше): emerge -av glibc После собираем предопределенные локали командой locale-gen

[править] Настройка

[править] Переменные окружения

В файле /etc/env.d/02locale надо прописать две строки:

Файл: /etc/env.d/02locale
LC_ALL=""
LANG="ru_RU.UTF-8"

Однако предпочтительнее это делать в файлах пользователя, например ~/.bash_profile.

Предупреждение: Не устанавливайте переменную LANG равной ru_RU.utf8! Хотя это допустимо и будет работать почти везде, кроме Java приложений, которые будут трактовать ввод как арабский.
Предупреждение: Не устанавливайте переменную LESSCHARSET равной UTF-8! Это приведет к неработоспособности как самой программы less(1), так и связанных с ней - таких как man(1).
Примечание: Разделитель целой и дробной части чисел с плавающей точкой в русских локалях - запятая: 3,1415. Что приводит к 'неожиданному' эффекту при импортировании текстовых файлов с числами, содержащими в качестве разделителя точку, в некоторые приложения, например, gnumeric. Добавьте после
LANG="ru_RU.UTF-8"
LC_NUMERIC="C"

для использования в качестве раздельтеля точки: 3.1415

Чтобы это изменение вступило в силу немедленно, выполните: env-update && source /etc/profile

[править] Файлы настройки системы

Нужно также изменить несколько файлов запуска системы. Все эти файлы входят в пакет baselayout, последние версии которого содержат ряд изменений упрощающих настройку и наиболее удобны для использования. Лучше всего обновить пакет до версии 1.11.9 или выше, но если у вас нет возможности этого сделать, то ниже приведены варианты и для старых версий.

В процессе настройки файлов вам будет неоходимо выбрать вариант раскладки клавиатуры, список доступных вариантов здесь. Для каждой раскладки клавиатуры определена кодировка и ее необходимо указать с помощью опции DUMPKEYS_CHARSET, тогда система будет автоматически конвертировать кодировку раскладки в кодировку вашей локали(в данном случае UTF-8).

При использовании раскладки ru-utf (пока нет в стандартной поставке) строку DUMPKEYS_CHARSET закомментировать.

Консольные шрифты посмотрите в каталоге /usr/share/consolefonts/

[править] openrc

Файл: /etc/conf.d/consolefont
consolefont="ter-k14n"
Файл: /etc/conf.d/keymaps
keymap="-u ru-ms"
dumpkeys_charset="koi8-r"

[править] baselayout

Примечание: Версия baselayout-1.11.9. Если у вас старее (времен 2005.1 :)), настоятельно рекомендуется обновиться до актуального состояния.
Файл: /etc/rc.conf
UNICODE="yes"
Файл: /etc/conf.d/consolefont
CONSOLEFONT="ter-k14n"
Примечание: Если понравился тот шрифт, что был раньше, то "ter-k14n" меняем на "cyr-sun16" (из sys-apps/kbd)
Примечание: Если используете стандартную консоль с шрифтом 8 на 16 или 8 на 8 точек, то лучше "ter-k16n" вместо "ter-k14n"
Файл: /etc/conf.d/keymaps
KEYMAP="-u ru4"
SET_WINDOWKEYS="yes" # Опционально
DUMPKEYS_CHARSET="koi8-r"

[править] Проверка локали

Заключительным аккордом дожен стать перезапуск сервисов keymaps и consolefont. /etc/init.d/keymaps restart /etc/init.d/consolefont restart (в случае ругани насчет неизвестного шрифта emerge terminus-font)

Теперь у вас должна быть локаль ru_RU.UTF-8

Code: locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

[править] USE флаги

[править] опция --newuse

В новых версиях portage (>=2.0.51) появился параметр --newuse. Он служит для пересборки пакетов с обновленными значениями USE-флагов. То есть после изменения флагов, вместо обновления каждого пакета, можно выполнить следующее: emerge --newuse -u world

[править] unicode

Добавляет (включает) поддержку Unicode в приложениях.

[править] userlocales

Подробные инструкции в статье Создание только нужных вариантов locale.

[править] Библиотеки

[править] glibc

Подробные инструкции в главе "Создание локали" в этой статье.

[править] ncurses и slang

Нужно пересобрать до c флагом unicode:

  • ncurses версии 5.4-r5 и выше
  • slang версии 1.4.9-r1 и выше

следующим образом

USE="unicode" emerge --oneshot --verbose sys-libs/ncurses sys-libs/slang

[править] gtk+ первой версии

ПРИМЕЧАНИЕ: Вместо ручной правки файлов, можно воспользоваться готовым ебилдом, взятым отсюда: http://gentoo.zugaina.org/fantoo/app-i18n.html.en .

Еще остается проблема с gtk+. Дело в том, что по умолчанию в настройках gtk+ не включена поддержка многобайтных шрифтов, поэтому надо в своем файле ~/.gtkrc кое-что изменить, а именно прописать нужный шрифт:

Файл: ~/.gtkrc
style "user-font"
{
   fontset="-monotype-arial-medium-r-normal-*-*-130-*-*-p-*-iso10646-1"
}
widget_class "*" style "user-font"

Если у вас уже прописан ваш шрифт, то вам требуется заменить font на fontset

font -> fontset

Для XOrg 6.8.2 надо сделать следующее:

Привести файл /usr/lib/X11/locale/en_US.UTF-8/XLC_LOCALE к следующему виду

Файл: /usr/lib/X11/locale/en_US.UTF-8/XLC_LOCALE

#  XLocale Database Sample for en_US.UTF-8
# 

# 
# XLC_FONTSET category
# 
XLC_FONTSET

on_demand_loading True

object_name generic

#       fs0 class (7 bit ASCII)
fs0     {
        charset {
                name   ISO8859-1:GL
        }
        font    {
                primary ISO8859-1:GL
                vertical_rotate all
        }
}
#fs1 class (ISO8859 families)
fs1     {
        charset {
                name ISO8859-1:GR
        }
        font    {
                primary ISO8859-1:GR
        }
}
#fs2 class (ISO8859 families)
fs2     {
        charset {
                name ISO8859-2:GR
        }
        font    {
                primary ISO8859-2:GR
        }
}
#fs3 class (ISO8859 families)
fs3     {
        charset {
                name ISO8859-3:GR
        }
        font    {
                primary ISO8859-3:GR
        }
}
#fs4 class (ISO8859 families)
fs4     {
        charset {
                name ISO8859-4:GR
        }
        font    {
                primary ISO8859-4:GR
        }
}
#fs5 class (ISO8859 families)
fs5     {
        charset {
                name ISO8859-5:GR
        }
        font    {
                primary ISO8859-5:GR
        }
}
#fs6 class (koi8-r)
fs6     {
        charset {
                name KOI8-R:GR
        }
        font    {
                primary KOI8-R:GR
        }
}
#fs7 class (ISO8859 families)
fs7     {
        charset {
                name ISO8859-7:GR
        }
        font    {
                primary ISO8859-7:GR
        }
}
#fs9 class (ISO8859 families)
fs8     {
        charset {
                name ISO8859-9:GR
        }
        font    {
                primary ISO8859-9:GR
        }
}
#fs13 class (ISO8859 families)
fs9     {
        charset {
                name ISO8859-13:GR
        }
        font{
                primary ISO8859-13:GR
        }
}
#fs14 class (ISO8859 families)
fs10    {
        charset {
                name ISO8859-14:GR
        }
        font    {
                primary ISO8859-14:GR
        }
}
#fs15 class (ISO8859 families)
fs11    {
        charset {
                name ISO8859-15:GR
        }
        font    {
                primary ISO8859-15:GR
        }
}
# fs16 class (Kanji)
fs12    {
        charset {
                name JISX0208.1983-0:GL
        }
        font    {
                primary JISX0208.1983-0:GL
        }
}
#   fs17 class (Korean Character)
fs13    {
        charset {
                name KSC5601.1987-0:GL
        }
        font    {
                primary KSC5601.1987-0:GL
        }
}
#   fs18 class (Chinese Han Character)
fs14    {
        charset {
                name GB2312.1980-0:GL
        }#  XLocale Database Sample for en_US.UTF-8
# 

# 
# XLC_FONTSET category
# 
XLC_FONTSET

on_demand_loading True

object_name generic

#       fs0 class (7 bit ASCII)
fs0     {
        charset {
                name   ISO8859-1:GL
        }
        font    {
                primary ISO8859-1:GL
                vertical_rotate all
        }
}
#fs1 class (ISO8859 families)
fs1     {
        charset {
                name ISO8859-1:GR
        }
        font    {
                primary ISO8859-1:GR
        }
}
#fs2 class (ISO8859 families)
fs2     {
        charset {
                name ISO8859-2:GR
        }
        font    {
                primary ISO8859-2:GR
        }
}
#fs3 class (ISO8859 families)
fs3     {
        charset {
                name ISO8859-3:GR
        }
        font    {
                primary ISO8859-3:GR
        }
}
#fs4 class (ISO8859 families)
fs4     {
        charset {
                name ISO8859-4:GR
        }
        font    {
                primary ISO8859-4:GR
        }
}
#fs5 class (ISO8859 families)
fs5     {
        charset {
                name ISO8859-5:GR
        }
        font    {
                primary ISO8859-5:GR
        }
}
#fs6 class (koi8-r)
fs6     {
        charset {
                name KOI8-R:GR
        }
        font    {
                primary KOI8-R:GR
        }
}
#fs7 class (ISO8859 families)
fs7     {
        charset {
                name ISO8859-7:GR
        }
        font    {
                primary ISO8859-7:GR
        }
}
#fs9 class (ISO8859 families)
fs8     {
        charset {
                name ISO8859-9:GR
        }
        font    {
                primary ISO8859-9:GR
        }
}
#fs13 class (ISO8859 families)
fs9     {
        charset {
                name ISO8859-13:GR
        }
        font{
                primary ISO8859-13:GR
        }
}
#fs14 class (ISO8859 families)
fs10    {
        charset {
                name ISO8859-14:GR
        }
        font    {
                primary ISO8859-14:GR
        }
}
#fs15 class (ISO8859 families)
fs11    {
        charset {
                name ISO8859-15:GR
        }
        font    {
                primary ISO8859-15:GR
        }
}
# fs16 class (Kanji)
fs12    {
        charset {
                name JISX0208.1983-0:GL
        }
        font    {
                primary JISX0208.1983-0:GL
        }
}
#   fs17 class (Korean Character)
fs13    {
        charset {
                name KSC5601.1987-0:GL
        }
        font    {
                primary KSC5601.1987-0:GL
        }
}
#   fs18 class (Chinese Han Character)
fs14    {
        charset {
                name GB2312.1980-0:GL
        }
        font    {
                primary GB2312.1980-0:GL
        }
}
#fs20 class (Half Kana)
fs15    {
        charset {
                name JISX0201.1976-0:GR
        }
        font    {
                primary JISX0201.1976-0:GR
                vertical_rotate all
        }
}
#ISO10646 should come last so the fonts above will actually be used
#fs24 class
fs16    {
        charset {
                name ISO10646-1
        }
        font    {
                primary ISO10646-1
        }
}
END XLC_FONTSET

# 
# XLC_XLOCALE category
# 
XLC_XLOCALE

encoding_name UTF-8
mb_cur_max 6
state_depend_encoding False

#cs0 class
cs0     {
        side            GL:Default
        length          1
        ct_encoding     ISO8859-1:GL
}

#cs1 class
cs1     {
        side            GR:Default
        length          1
        ct_encoding     ISO8859-1:GR
}
 
#cs2 class
cs2     {
        side            GR
        length          1
        ct_encoding     ISO8859-2:GR
}
 
#cs3 class
cs3     {
        side            GR
        length          1
        ct_encoding     ISO8859-3:GR
}
 
#cs4 class
cs4     {
        side            GR
        length          1
        ct_encoding     ISO8859-4:GR
}
 
#cs5 class
cs5     {
        side            GR
        length          1
        ct_encoding     ISO8859-5:GR
}
 
#cs6 class
cs6     {
        side            GR
        length          1
        ct_encoding     KOI8-R:GR
}
 
#cs7 class
cs7     {
        side            GR
        length          1
        ct_encoding     ISO8859-7:GR
}
 
#cs9 class
cs8     {
        side            GR
        length          1
        ct_encoding     ISO8859-9:GR
}
 
#cs13 class
cs9     {
        side            GR
        length          1
        ct_encoding     ISO8859-13:GR
}
 
#cs14 class
cs10     {
        side            GR
        length          1
        ct_encoding     ISO8859-14:GR
}
 
#cs15 class
cs11     {
        side            GR
        length          1
        ct_encoding     ISO8859-15:GR
}
 
#cs16 class
cs12{
side GR
length 2
ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;JISX0208.1983-1:GL; JISX0208.1983-1:GR

}

#cs17 class
cs13     {
        side            GL
        length          2
        ct_encoding     KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR

}
 
#cs18 class
cs14     {
        side            GR
        length          2
        ct_encoding     GB2312.1980-0:GL; GB2312.1980-0:GR
}
 
#cs20 class
cs15     {
         side GR
         length 1
         ct_encoding JISX0201.1976-0:GR
}
 
#cs24 class
cs16    {
        font    {
                primary GB2312.1980-0:GL
        }
}
#fs20 class (Half Kana)
fs15    {
        charset {
                name JISX0201.1976-0:GR
        }
        font    {
                primary JISX0201.1976-0:GR
                vertical_rotate all
        }
}
#ISO10646 should come last so the fonts above will actually be used
#fs24 class
fs16    {
        charset {
                name ISO10646-1
        }
        font    {
                primary ISO10646-1
        }
}
END XLC_FONTSET

# 
# XLC_XLOCALE category
# 
XLC_XLOCALE

encoding_name UTF-8
mb_cur_max 6
state_depend_encoding False

#cs0 class
cs0     {
        side            GL:Default
        length          1
        ct_encoding     ISO8859-1:GL
}

#cs1 class
cs1     {
        side            GR:Default
        length          1
        ct_encoding     ISO8859-1:GR
}
 
#cs2 class
cs2     {
        side            GR
        length          1
        ct_encoding     ISO8859-2:GR
}
 
#cs3 class
cs3     {
        side            GR
        length          1
        ct_encoding     ISO8859-3:GR
}
 
#cs4 class
cs4     {
        side            GR
        length          1
        ct_encoding     ISO8859-4:GR
}
 
#cs5 class
cs5     {
        side            GR
        length          1
        ct_encoding     ISO8859-5:GR
}
 
#cs6 class
cs6     {
        side            GR
        length          1
        ct_encoding     KOI8-R:GR
}
 
#cs7 class
cs7     {
        side            GR
        length          1
        ct_encoding     ISO8859-7:GR
}
 
#cs9 class
cs8     {
        side            GR
        length          1
        ct_encoding     ISO8859-9:GR
}
 
#cs13 class
cs9     {
        side            GR
        length          1
        ct_encoding     ISO8859-13:GR
}
 
#cs14 class
cs10     {
        side            GR
        length          1
        ct_encoding     ISO8859-14:GR
}
 
#cs15 class
cs11     {
        side            GR
        length          1
        ct_encoding     ISO8859-15:GR
}
 
#cs16 class
cs12{
side GR
length 2
ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;JISX0208.1983-1:GL; JISX0208.1983-1:GR

}

#cs17 class
cs13     {
        side            GL
        length          2
        ct_encoding     KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR

}
 
#cs18 class
cs14     {
        side            GR
        length          2
        ct_encoding     GB2312.1980-0:GL; GB2312.1980-0:GR
}
 
#cs20 class
cs15     {
         side GR
         length 1
         ct_encoding JISX0201.1976-0:GR
}
 
#cs24 class
cs16     {
         side none
         ct_encoding ISO10646-1
}

END XLC_XLOCALE

это исправит проблему с gtk+1 и utf-8 :)

[править] Приложения

[править] Fluxbox

Для удаления тормознутости fluxbox: export USE="disablexmb" emerge fluxbox

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

  1. ebuild /usr/portage/x11-wm/fluxbox/fluxbox-0.9.15.1.ebuild unpack
  2. iconv -f KOI8-R -t UTF-8 /var/tmp/portage/x11-wm/fluxbox-0.9.15.1-r1/work/fluxbox-0.9.15.1-r1/nls/ru_RU/Translation.m > /tmp/Translation.m
  3. mv /tmp/Translation.m /var/tmp/portage/x11-wm/fluxbox-0.9.15.1-r1/work/fluxbox-0.9.15.1-r1/nls/ru_RU/Translation.m
  4. ebuild /usr/portage/x11-wm/fluxbox/fluxbox-0.9.15.1.ebuild merge

[править] FVWM

FVWM неправильно выставляет Default Charset. Для исправления см. Использование UTF8 в FVWM

[править] SSH

Когда в системе локаль UTF, но нужно по ssh "ходить" на удаленные компьютеры с KOI8-R, то необходим перекодировщик luit.

emerge x11-apps/luit

Пользоваться так:

luit -encoding "KOI8-R" ssh legacy_remote_host


В иксах же удобнее пользоваться konsole (терминал от KDE). Ибо выбор кодировки для сессии находится у него в меню настройки.

[править] gFTP

Хоть и интерфейс программы нормально работает с UTF-8 локалью, но если, при подключении к серверам с именами файлов в других кодировках, у вас возникают проблемы, то проблему можно решить с помощью патча, последняя версия всегда доступна со страницы автора.

Для возможности последующих обновлений используем Portage_Overlay. Копируем ebuild'ы gFTP в оверлей и патч в директорию files, правим ebuild gFTP:

Code: необходимые изменения в ebuild'е
diff -ru /usr/portage/net-ftp/gftp/gftp-2.0.18-r3.ebuild /usr/local/portage/net-ftp/gftp/gftp-2.0.18-r3.ebuild
--- /usr/portage/net-ftp/gftp/gftp-2.0.18-r3.ebuild	2005-11-06 08:57:10.000000000 +0300
+++ /usr/local/portage/net-ftp/gftp/gftp-2.0.18-r3.ebuild	2005-11-09 14:19:39.000000000 +0300
@@ -29,6 +29,7 @@
 	# patch to allow fetching of ssh2 files
 	# that are read-only, see bug #91269 and upstream link.
 	epatch ${FILESDIR}/${P}-ssh2-read.patch
+	epatch ${FILESDIR}/${P}-convert-names-r1.patch
 
 }
 

Обновляем digest файлы: ebuild /usr/local/portage/net-ftp/gftp/gftp-2.0.18-r3.ebuild digest Собираем gFTP: emerge gftp Запускаем и настраиваем, пример настройки смотрим здесь.

Наслаждаемся!

[править] man

Для того, чтобы man правильно отображал русские страницы (man-pages-ru), необходимо в файле /etc/man.conf найти строку, начнающуюся со слова NROFF, и поправить её следующим образом:

Файл: /etc/man.conf
...
# NROFF      /usr/bin/nroff -Tascii -c -mandoc
NROFF        /usr/bin/nroff -mandoc -Tlatin1 -c | iconv -f koi8-r -t utf-8
...

Эти действия приводят к тому, что файлы читаемые из /usr/share/man/ru/ (которые находятся там в кодировке koi8-r) форматируются командой nroff и выводятся как 8-битная кодировка latin1 на выход (хотя на самом деле там стоят русские символы закодированные в koi8-r). nroff, по-видимому, трактует входные данные как закодированные в кодировке latin1, и, поэтому, при просьбе вывести их в latin1 не производит никаких преобразований, губительных для русских символов. Дальше вывод nroff пропускается через iconv и превращается из koi8-r в utf8. У меня это привело к работоспособности русскоязычных и англоязычных страниц man (Azure 10:58, 16 февраля 2008 (UTC))


Если такой метод вызывает проблемы (английские страницы man ломаются), то можно использовать иной способ. В файле /etc/man.conf найти строку, начнающуюся со слова NROFF, и поправить её следующим образом:

Файл: /etc/man.conf
...
# NROFF      /usr/bin/nroff -Tascii -c -mandoc
 NROFF           /usr/bin/nroff -Tlatin1 -c -mandoc
...


А в файл /etc/env.d/02locale добавьте следующую строку:

Файл: /etc/env.d/02locale
...
MANPAGER="iconv -c -f KOI8-R -t UTF-8 | /usr/bin/less -isr"
...

И выполните комманду:

env-update && source /etc/profile

Примечание: Данный пример настройки отображает русские страницы руководства, хранящиеся в кодировке KOI8-R. Отображение страниц, хранящихся в UTF-8 не работает (в том числе и без настройки).


Примечание: Есть способ радикально решить вопрос с отображением man страниц в любых русских кодировках (в том числе и в UTF8), с помощью конвертера enca. Этот конвертер способен "угадывать" кодировку поданного на вход текста и преобразовывать в желаемую.

Установите конвертер

emerge app-i18n/enca

Поправьте файл /etc/man.conf следующим образом:

Файл: /etc/man.conf
...
# NROFF      /usr/bin/nroff -Tascii -c -mandoc
NROFF        /usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -mandoc -Tlatin1 -c | /usr/bin/enconv -L ru -x UTF8
...

Работает этот конвейер следующим образом:

1. Так как nroff в текущей реализации не способен обрабатывать man страницы в русской UTF8 кодировке, мы с помощью enconv (вызов enca в качестве pipeline фильтра) преобразуем русские man из любой исходной русской кодировки (за это отвечает ключ -L ru) в KOI8-R (ключ -x KOI8-R) и передаём nroff.

2. Nroff форматирует страницу, после чего мы опять пропускаем её через enca, перекодируя результат в UTF8. Затем less нам её показывает.

Таким образом все русские man страницы в системе отображаются корректно независимо от их исходных кодировок.


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


Скачиваем и распаковываем исходные коды man:

ebuild /usr/portage/sys-apps/man/man-1.6f.ebuild unpack


Перекодируем русские сообщения из koi8-r в utf-8:

iconv -f koi8-r -t utf-8 /var/tmp/portage/sys-apps/man-1.6f/work/man-1.6f/msgs/mess.ru > /tmp/mess.ru

mv /tmp/mess.ru /var/tmp/portage/sys-apps/man-1.6f/work/man-1.6f/msgs/mess.ru


Редактируем файл /var/tmp/portage/sys-apps/man-1.6f/work/man-1.6f/msgs/mess.ru.codeset следующим образом:

Файл: /var/tmp/portage/sys-apps/man-1.6f/work/man-1.6f/msgs/mess.ru.codeset
$ codeset=UTF-8


Устанавливаем man из измененных нами исходных файлов:

ebuild /usr/portage/sys-apps/man/man-1.6f.ebuild merge

Очищаем временный каталог:

ebuild /usr/portage/sys-apps/man/man-1.6f.ebuild clean


Примечание: В редких случаях перед описанными действиями по пересборке man еще необходимо сделать #revdep-rebuild --soname libncurses.so.5 (ну а уже потом пересборка)

[править] Midnight Commander

Библиотека slang должна быть собрана с флагом unicode (смотрите главу "Библиотеки".)

USE="unicode" emerge slang

USE="unicode slang -ncurses" emerge mc

Для того чтобы при нажатии F1 корректно отображалась помощь на русском языке нужно конвертировать файлы справки mc из koi8 в юникод

cd /usr/share/mc

iconv -f koi8-r -t utf8 ./mc.hint.ru -o mc.hint.ru~

iconv -f koi8-r -t utf8 mc.hlp.ru -o mc.hlp.ru~

mv mc.hlp.ru~ mc.hlp.ru

mv mc.hint.ru~ mc.hint.ru

[править] MPlayer

Начиная с версии 1.0_pre8 MPlayer полностью совместим с Юникодом. Просто выполните

USE="unicode" emerge mplayer

Подробнее в статье HOWTO Mplayer

[править] Проигрыватель Kaffeine

Большинство русских тегов записаны в кодировке CP-1251. Чтобы Kaffeine их нормально обрабатывал - запускаем Kaffeine, идем в Настройки, на закладке "Разное" ставим галочку "Использовать другю кодировку" и выбираем CP 1251.

[править] XMMS

Заставляем XMMS говорить по-русски

Я работаю в юникоде. Чтобы xmms мне корректно отображал русские имена файлов я его запускаю вот так:

env LC_MESSAGES=ru_RU.UTF-8 LANG=ru_RU.CP1251 xmms

Русские теги xmms отображает криво потому, что они в кодировке cp1251. Чтобы решить этот вопрос я ставлю шрифты для плейлиста и главного окна с кодировкой cp1251. У меня такой шрифт:

   -adobe_windows_1251-helvetica-medium-r-normal-*-*-100-*-*-p-*-microsoft-cp1251

А взял я эти шрифты адресу http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/ В принципе, можно взять любые, в которых есть поддержка кодировки cp

Существует интересный проект RusXMMS

[править] Trafshow

Совет по настройке UTF8 в Trafshow.

[править] X-терминалы

Список терминалов, которые уже поддерживают юникод:

[править] Разное

[править] Перекодировка имен файлов

Для перекодировки имён файлов используем convmv: emerge convmv Инструкция к применению: man convmv либо MAN-convmv

Большинство программ без поддержки юникода сегфолтится например - не могут открыть терминал ion, ion3
собранная с юникодом centericq выглядит сильно убого.

Проблема с некорректным отображением в nano(отсутствут буквы и прочее) полностью решается пересборкой _после локализации_ пакетов ncurses и nano с включенным флагом unicode.


Где бы на русском примеры экзэмплов по convmv

Прошу:

convmv -f cp1251 -t utf8 -r --notest ./

переводит в текущем каталоге рекурсивно(и все вложенные папки и файлы) имена файлов из кодировки cp1251 в utf8. Когда давал ссылку на MAN думал там всё просто....

Как выставить больший приоритет для русских страниц man? Переменная LANG(как заявленно в man man) не помогает.

echo alias man=\'man -m ru\' >> ~/.bashrc

[править] Монтирование разделов

HOWTO Разделы MS Windows по-русски

[править] Проблемы и решения

  • П: Сделал все, как здесь написано, и после этого стала медленно работать консоль: скроллинг, скорость работы клавиатуры, задержки нажатия клавиш - все резко замедлилось. Куда надо покопать?
    • Р: Допишите в USE флагах флаги "unicode utf8", потом сделайте
      emerge --deep --newuse world
  • П: После просмотра двоичного файла слетела ru_RU.UTF-8 консоль.
    • Р: Из работающей консоли выполнить
      #echo -ne "\033c" >/dev/ttyX

      Или в слепую на сломанной консоли
      #echo -ne "\033c"

  • П: Сделал все, как написано. Все отлично работает. Но возникла проблема с sudo. Если зайти под своим пользователем, а потом выполнить sudo -s, то locale выдает снова POSIX, вместо utf8. Через su все нормально. В какую сторону рыть?
    • Р: В /etc/sudoers разрешить экспрт переменных.

[править] Дополнительная Информация!


Посоветовать или спросить,
пожаловаться или поблагодарить
можно на странице обсуждений.
Обсуди эту статью на форуме Gentoo.ru

Личные инструменты