Настройка Linux (Slackware)

Русификация

Теперь перейдем к прозе жизни ...начинающим довольно тяжело установить Linux, но рано или поздно им это удается,благо в интернете полно описаний, как это сделать наиболее быстро и безболезненно. Теперь следующий шаг - заставить Linux понимать русский язык. Но если описания установок в своей сути сходятся,то описаний русификаций столько, что у начинающих разбегаются глаза и они махают рукой на все это ...Тем более, что Cyrrillic-HOWTO написан кучу лет назад, да еще он и на английском существует в куче вариантов ;-) нельзя пользователю на начальном этапе давать возможность выбора - иначе он выберет самый худший вариант. ;-) вот и я решил добавить свое описание, так сказать, для увеличения разнообразия. Сразу предупрежу - мой рецепт годится только для дистрибутива Slackware, так как я исконно работаю с ним, советую всем знакомым и вообще - он самый лучший ;-) (соответственно все возмущения и панегирики отправляйте в /dev/null). Все нижеописанное с успехом проделано не один раз мной и моими знакомыми ... Итак, приступим ..


Русификация текстовой консоли

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

Итак, сначала сделаем, что бы можно было читать по русски - для этого загрузим соответствующие шрифты в память видеоадаптера. Здесь два пути - сразу записать шрифты в кои-8 или сначала записать шрифты в кодировке дос (ср866), а потом включить трансляцию кои-8 в ср866.

Второй путь выгодней из-за двух причин - в любой момент на начальном этапе вы спокойно можете читать тексты с дос кодировкой и впоследствии без каких-либо правок иметь нормальное отображение псевдографики. Для первого пути в /etc/rc.d/rc.font (rc.local) пропишите следующая строчка (если она уже не была вписана Slackware setup'ом):

setfont koi8-8x16

после setfont стоит имя файла с образом шрифта, который мы загружаем в память видеоадаптера. Поправленный (псевдографика) koi8-фонт есть у меня. Все шрифты по умолчанию лежат в /usr/lib/kbd/consolefonts
для второго пути пропишите в /etc/rc.d/rc.font (rc.local):
 
setfont Cyr_a8x16
mapscrn koi2alt
for n in 1 2 3 4 5 6; do
  echo -ne "\033(K" > /dev/tty$n
done
Первая строчка загружает образ шрифта, вторая задает правила трансляции символов (лежат в /usr/lib/kbd/consoletrans), а последние три строчки предназначены для того, чтобы включить трансляцию на терминалах, хотя можно и делать это другими способами.
Например :
1.Прописать команду включения в /etc/issue, но этот способ является некорректным, так как по умолчанию в SlackWare /etc/issue.net (в нем содержится приглашение пользователям ,которые заходят на вашу машину снаружи) сделан линком на /etc/issue, и соответственно на экране у них будет появляться мусор.
2.Прописать все эти команды в свой профайл, но тогда придеться делать проверку того, что вы не находитесь в X-Window, иначе при каждом запуске xterm у вас будут идти сообщения об ошибке).
3.Ну и наконец просто руками вводить на каждой консоли, где надо нормальные русские буквы, волшебную командочку echo -ne "\033(K".
И все, теперь Вы без проблем можете читать тексты в кодировке koi8, и дополнительно ко второму способу после команды mapscrn trivial можете читать Ваши файлы в дос - кодировке (обратно - опять mapscrn koi2alt)

Второй шаг - возможность вводить русские буквы - это делается еще проще ... пишем в /etc/rc.d/rc.local после команд загрузки шрифта следующее:

loadkeys ru1.map
(можете попробовать другие раскладки - они лежат в /usr/lib/kbd/keytables.

Итак, посмотрите, какая у вас оболочка-shell (смотреть надо в /etc/passwd на строчку со своим логином и искать слова типа bash,csh,tcsh и т.д.).

В случае bash идем в свой домашний каталог, в самый корень, и создаем там файл .inputrc со следующим содержимым (если Вы хотите, что бы при добавлении пользователей им не приходилось заново прописывать этот файл вручную, скопируйте его в /etc/skel) :

set meta-flag on
set convert-meta off
set output-meta on
"\e[3~": delete-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[e": end-of-line
"\e[\C-@": beginning-of-line
перелогиньтесь (или просто зайдите с другой консоли) и наблюдайте, как вводятся русские буковки.

Установка Locale.

Последний шаг - установка locale (это полезно для того, чтобы система нормально могла работать с русским языком (сортировка, даты и прочее).
Для этого создаете в каталоге /usr/share/locale каталог ru_SU.KOI8-R и разверните там этот (работающий у автора,взятый где-то в дебрях интернета) файл (или другой,которые Вы возможно нашли где-то еще.Проверить, то ли у Вас, просто: наберите ls /usr/share/locale/ru_SU.KOI8-R- на экране должно появиться аналогичные строчки:

bash$ ls  /usr/share/locale/ru_SU.KOI8-R
LC_COLLATE   LC_MESSAGES  LC_NUMERIC   libc.cat
LC_CTYPE     LC_MONETARY  LC_TIME
bash$
).
Для последнего шага пропишите в /etc/profile или в вашем локальном профайле (в случае bash) всего три строчки
export LANG=ru_SU.KOI8-R
export NLSPATH=/usr/share/locale/ru_SU.KOI8-R/
export LESSCHARSET=koi8-r
Для tcsh надо вместо export поставить setenv
и опять перелогиньтесь. Все, теперь у Вас есть возможность читать и писать тексты в кои-8 , система осведомлена о русском языке. Как это проверить ?. Очень просто - как русские буковки вводятся вы и так увидите, теперь введите команду cal (календарь) - должны будут увидеться русские названия месяцев. Теперь более сложный тест:
введите
echo Тест|dd conv=ucase
если на экране увидите что-то отличающееся от ТЕСТ - значит что-то вы не так сделали-смотрите , где ошиблись и исправляйте. ВСЕ, на этом русификация текстовой консоли завершена! .

Русификация X-Window

Теперь будем русифицировать X-Window - это не намного сложнее, чем текстовую консоль - ищем файл XF86Config (скорее всего, он лежит либо в /etc/ либо в вашем домашнем каталоге) и ищем в нем такие строчки:

Section "Files"
RgbPath  "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
.....
EndSection
Итак , смотрим каталог /usr/X11R6/lib/X11/fonts/ на предмет русских шрифтов (обычно каталог cyr или cyrillic) и если находим, ставим путь к ним в самом начале перед всеми описаниями путей, как показано выше.Если же не находим, значит Вы при инсталляции XFree не установили русские шрифты. Возьмите из дистрибутива файл /slakware/x1/x332fcyr.tgz, и разверните его с помощью /sbin/pkgtool. В нем содержиться большой набор Bitmap-фонтов. Однако, для многих программ (в частоности, для ghostscript) требуются также русские Type1-фонты. Их можно скачать, например, c ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/gs-type1_koi8_fonts.tgz.
Стандартное место для них: /usr/X11/lib/fonts/Type1.
Файл gs-type1_koi8_fonts.tgz содержит:
- ERKurier KOI8-R фонты, конвертированные из ttf-формата ((c) Gavin Helf, 1995. Changes (c) 1996 by Andrey A. Chernov).
- 3 семейства фонтов ArialCyrMT, CourierCyrPS и TimesNRCyrMT ((c) Monotype Corporation 1990-1992), полученные конвертированием соответствующих ttf- фонтов. Псевдографика отсутствует.
ERKurier и CurierCyr являются monospaced фонтами. ERKurier включает в себя псевдографику в соответствии с RFC 1489. ArialCyr (который imho допустимо использовать в качестве замены Helvetica) и TimesNRCyr - proportional фонты.

В итоге секция "Files" в файле XF86Config должна стать похожей на вышеприведенную.
Теперь можете спокойно перезагрузить XFree (или если нельзя - то почитайте man на предмет xset +fp и xset rehash) После загрузки Вашего оконного менеджера проверьте, появились ли у вас шрифты: запустите xfontsel и выставьте последние два параметра (registry-encoding) в koi8-r - Вы должны увидеть русский язык.

Как быть, если русских шрифтов не хватает или их начертание Вас не устраивает,а Вам позарез надо написать что-то где-нибудь красивое до невозможности ?
Есть такая вещь, называется FontServer (например xfstt) - он может по любому доступному каналу связи раздавать шрифты (и не надо хранить большие мегабайты шрифтов на машинах, где они могут понадобиться). Скачиваем сервер, конфигурируем, инсталлируем (./configure;make;make install - только прочитайте INSTALL перед установкой) ,отбираем у ближайшего виндузятника сидюк с кучей ttf или достаем любым другим правозаконным способом шрифты и переписываем их в /usr/ttfonts.Запускаем фонт-сервер командами

/usr/X11R6/bin/xfstt -sync
/usr/X11R6/bin/xfstt -encoding koi8-r,windows-1251 &
и все, теперь у нас на 7100ом порту запущен фонт-сервер. Добавляем путь к нему либо руками (xset +fp ...) либо правим XF86Config(и перезапускаем XFree) , как показано ниже :
Section "Files"
   RgbPath    "/usr/X11R6/lib/X11/rgb"
   FontPath   "inet/127.0.0.1:7100"
   FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic"
(выделенная строчка).Теперь все установленные шрифты Вы можете использовать в своих программах.Замечу, что фонт-серверов может быть несколько,только необходимо, что бы на время работы XFree они все были доступны.
Замечание: Скоро должен появиться XFree-4.0, где будет прямая поддержка TTF.

Ввод русских букв


Cуществуют 2 общепринятых пути ввода русских букв:
1.Через xmodmap или "хакерский", который меняет modmap во время работы.
2.Через xkb, рекомендуемый авторами XFree.
Второй способ используется, когда Вам кроме ввода русских букв в кои-8 в X-ах Вам другие кодировки не потребуются (что в стране 6ти кодировок случается довольно редко), а первый во всех остальных случаях.
Во втором случае вам просто надо поправить XF86Config на тему того, какая клавиша будет заниматься переключением раскладок (man XF86Config) и сказать xmodmap <ваша раскладка>.
Первый способ чуть сложнее - его и опишем.
надо взять переключатель клавиатуры (xrus) и соответсnвующим образом настроить его ./configure;make;make install и отредактировать в /var/X11R6/lib/app-defaults/xrus на предмет *altMap - тут описываются все раскладки, которые Вы желаете использовать , пример ниже
...........
! To use several alternate modmaps, specify the following
! resources:
*altMaps:  /var/X11R6/lib/xinit/.Xmodmap.1251 /var/X11R6/lib/xinit/.Xmodmap
*altmap0.labelString: Win map
*altmap1.labelString: KOI map
...........
Запускаем xrus и проверяем ввод русских букв везде, где только сможем. Если Вам надо еще одну раскладку - снова просто правим конфиг xrus, перезапускаем его и получаем еще одну раскладку клавиатуры
Самый распоследний шаг, проверьте файл locale.alias (/var/X11R6/lib/locale/locale.alias) на предмет того, что бы русские локали указывали на ru_SU.KOI8-R, а не на ISO.

Русификация Ghostscript

Чтобы добавить русские шрифты в ghostscript - следует, забрав файлы ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/gs-type1_koi8_fonts.tgz
ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/gs-Fontmap.add.gz
проделать следующее (с привилегиями root):
$: cd /usr/lib/ghostscript/fonts/
$: tar xzf {путь_к_файлу}/gs-type1_koi8_fonts.tgz
$: cd ../<номер_версии_gs>/
$: cp Fontmap Fontmap.orig
$: zcat {путь_к_файлу}/gs-Fontmap.add.gz >> Fontmap
Фонты были сгенерены в pfb-формате, метрика - в pfm-формате. Если для работы каких-либо приложений Вам необходимо иметь метрику в afm-формате, Вам следует забрать файл ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/gs-type1_koi8_afm.tgz и также разархивировать его в /usr/lib/ghostscript/fonts/. Фонты в формате pfa, если это необходимо, можно получить из соответствующих pfb-файлов с помощью утилиты pfb2pfa либо pfbtops. Для того, чтобы иметь возможность работать в gs с фонтами Courier, Times и Helvetica в koi8 кодировке, необходимо в Fontmap поменять алиасы на них: закомментировать стоящие по умолчанию и раскомментировать добавленные из gs-Fontmap.add. Какой из двух monospaced фонтов будет у Вас называться Courier - решайте сами. А вот кириллические добавки к Fontmap
% Cyrrillic koi8 fonts/aliases

/ArialCyrMT				(arial8.pfb)	;
/Arial			/ArialCyrMT			;
% /Helvetica		/ArialCyrMT			;
/ArialCyrMT-Bold			(arialbd8.pfb)	;
/Arial-Bold		/ArialCyrMT-Bold		;
% /Helvetica-Bold	/ArialCyrMT-Bold		;
/ArialCyrMT-Italic			(ariali8.pfb)	;
/Arial-Italic		/ArialCyrMT-Italic		;
% /Helvetica-Oblique	/ArialCyrMT-Italic		;
/ArialCyrMT-BoldItalic			(arialbi8.pfb)	;
/Arial-BoldItalic	/ArialCyrMT-BoldItalic		;
% /Helvetica-BoldOblique	/ArialCyrMT-BoldItalic	;

/CourierCyrPS				(cour8.pfb)	;
% /Courier		/CourierCyrPS			;
/CourierCyrPS-Bold			(courbd8.pfb)	;
% /Courier-Bold		/CourierCyrPS-Bold		;
/CourierCyrPS-Inclined			(couri8.pfb)	;
% /Courier-Oblique	/CourierCyrPS-Inclined		;
/CourierCyrPS-BoldInclined		(courbi8.pfb)	;
% /Courier-BoldOblique	/CourierCyrPS-BoldInclined	;

/TimesNRCyrMT				(times8.pfb)	;
% /Times-Roman		/TimesNRCyrMT			;
/TimesNRCyrMT-Bold			(timesbd8.pfb)	;
% /Times-Bold		/TimesNRCyrMT-Bold		;
/TimesNRCyrMT-Inclined			(timesi8.pfb)	;
% /Times-Italic		/TimesNRCyrMT-Inclined		;
/TimesNRCyrMT-BoldInclined		(timesbi8.pfb)	;
% /Times-BoldItalic	/TimesNRCyrMT-BoldInclined	;

/ERKurierKOI8RRegular			(cokoi8n.pfb)	;
% /Courier		/ERKurierKOI8RRegular		;
/ERKurierKOI8RBold			(cokoi8b.pfb)	;
% /Courier-Bold		/ERKurierKOI8RBold		;
/ERKurierKOI8RItalic			(cokoi8i.pfb)	;
% /Courier-Oblique	/ERKurierKOI8RItalic		;
/ERKurierKOI8RBoldItalic 		(cokoi8bi.pfb)	;
% /Courier-BoldOblique	/ERKurierKOI8RBoldItalic	;
Во избежание подмены ghostscript'ом установленных koi8-фонтов другими (нескалируемыми X-фонтами), gs следует запускать с ключем -dNOPLATFONTS.

Русские имена файлов на fatXX (MS DOS,WinXX)

Все довольно просто. Необходимо при компиляции ядра не забыть добавить поддержку Native Language Support (NLS).
make [x,menu]config -> CONFIG_FAT_FS=y
		       CONFIG_NLS=y
		       CONFIG_NLS_CODEPAGE_866=y
		       CONFIG_NLS_KOI8_R=y
		       CONFIG_MSDOS_FS=y
		       CONFIG_VFAT_FS=y
Монтировать директории с fatXX следует так:
mount -t vfat -o codepage=866,iocharset=koi8-r /dev/xxx /xxx
или просто добавить в файл /etc/fstab строчку:
/dev/xxx   /xxx    vfat  codepage=866,iocharset=koi8-r   1   1

Назад Дальше
HTML by Igor Drozdovsky
Последнее обновление: