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

Vk-big.pngYoutube-big.jpeg

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

Материал из Xgu.ru

Перейти к: навигация, поиск
Автор: Сидорук Анатолий Николаевич

Icon-cleanup-lang.jpg

Язык статьи отличается от языка, принятого на xgu.ru.
Вы можете улучшить статью, приведя текст статьи к принятым у нас нормам.

На что обратить внимание:

  • орфография
  • стиль
  • вики-разметка

Содержание

[править] Русификация консоли

Русифицировал консоль в /etc.rc.conf там все указал стандартно

 font8x16="cp866-8x16"
 scrnmap="koi8-r2cp866"
 keymap="ru.koi8-r"

ну по ходу и в

./etc/ttys     cons25r

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

сидел по root и сразу ему прописал пременные чтоб не было крякозяблов на его консоли командами:

 setenv LANG ru_RU.KOI8-R
 pw usermod root -L russian

потом перезапустил консоль командной /etc/rc.d/syscons и вышел из системы и потом снова залогинился рутом прверил русификацию консоли командами date и ls

oblenergy# date
вторник, 12 ноября 2013 г. 19:20:38 (EET)

oblenergy# ls -Al
total 7458
drwxr-xr-x  3 root  wheel      512 16 авг  2010 .cache
-rw-r--r--  2 root  wheel      798 19 июл  2010 .cshrc
-rw-r--r--  1 root  wheel        7 30 авг  2010 .forward
-

ну напоследок ввел несуществующую команду чтоб посмотреть, что мне ответят на великом и могучем русском:

oblenergy# jkjklj
jkjklj: Команда не найдена.
oblenergy#

Как видно, все русифицировалось

[править] Русский man

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

Для этого сначала думал установить с портов subversion

 #whereis subversion
 /usr/ports/devel/subversion
 #

Но установил его из пакетов, чтоб быстрее было, потом им затянул то что мне надо для сборки доументации тянул не по "https" протоколу, а по "svn" c ключем "co"_ и указал скачать в *|/usr/doc (каталога не, было она сама его создала)|* командой

 svn co snv://svn0.us-west.FreeBSD.org/doc/head /usr/doc

Каталог /usr/doc вышел довольно обьемный а весь процесс занял минут 25 (нужно было бы наверно указать что нужно стянуть только все русское так как ето указывалось прежде в cvsup. Но не стал рабиратся место то на дисках счас хватет не то что раньше)

root@gat:~ # ls -Al /usr/doc/
total 100
drwxr-xr-x   4 root  wheel   512 12 ноя 18:24 .svn
-rw-r--r--   1 root  wheel  1400 12 ноя 18:20 Makefile
-rw-r--r--   1 root  wheel   387 12 ноя 18:16 README
drwxr-xr-x   4 root  wheel   512 12 ноя 18:20 bn_BD.UTF-8
drwxr-xr-x   5 root  wheel   512 12 ноя 18:14 da_DK.ISO8859-1
drwxr-xr-x   7 root  wheel   512 12 ноя 18:14 de_DE.ISO8859-1
drwxr-xr-x   7 root  wheel   512 12 ноя 18:21 el_GR.ISO8859-7
drwxr-xr-x   9 root  wheel   512 12 ноя 18:17 en_US.ISO8859-1
drwxr-xr-x   7 root  wheel   512 12 ноя 18:21 es_ES.ISO8859-1
drwxr-xr-x   8 root  wheel   512 12 ноя 18:21 fr_FR.ISO8859-1
drwxr-xr-x   8 root  wheel   512 12 ноя 18:17 hu_HU.ISO8859-2
drwxr-xr-x   7 root  wheel   512 12 ноя 18:21 it_IT.ISO8859-15
drwxr-xr-x   7 root  wheel   512 12 ноя 18:15 ja_JP.eucJP
drwxr-xr-x   5 root  wheel   512 12 ноя 18:20 mn_MN.UTF-8
drwxr-xr-x   7 root  wheel   512 12 ноя 18:14 nl_NL.ISO8859-1
drwxr-xr-x   3 root  wheel   512 12 ноя 18:16 no_NO.ISO8859-1
drwxr-xr-x   5 root  wheel   512 12 ноя 18:15 pl_PL.ISO8859-2
drwxr-xr-x   6 root  wheel   512 12 ноя 18:15 pt_BR.ISO8859-1
drwxr-xr-x   3 root  wheel   512 12 ноя 18:20 release
drwxr-xr-x   8 root  wheel   512 12 ноя 18:20 ru_RU.KOI8-R
drwxr-xr-x  13 root  wheel   512 12 ноя 18:20 share
drwxr-xr-x   5 root  wheel   512 12 ноя 18:14 sr_YU.ISO8859-2
drwxr-xr-x   5 root  wheel   512 12 ноя 18:14 tr_TR.ISO8859-9
drwxr-xr-x   6 root  wheel   512 12 ноя 18:18 zh_CN.GB2312
drwxr-xr-x   6 root  wheel   512 12 ноя 18:20 zh_TW.Big5

Затем я зашел в /usr/doc/ru_RU.KOI8-R/man/

root@gat:/usr/doc/ru_RU.KOI8-R/man # cd /usr/doc/ru_RU.KOI8-R/man/

Проверил наличие Makefile и посмотрел его содержимое

root@gat:/usr/doc/ru_RU.KOI8-R/man # ls -A
total 32
-rw-r--r--  1 root  wheel  1123 12 ноя 18:20 FRDP.man.dist
-rw-r--r--  1 root  wheel   452 12 ноя 18:20 Makefile
-rw-r--r--  1 root  wheel   275 12 ноя 18:20 Makefile.inc
drwxr-xr-x  2 root  wheel  5120 12 ноя 19:02 man1
drwxr-xr-x  2 root  wheel   512 12 ноя 19:02 man3
drwxr-xr-x  2 root  wheel   512 12 ноя 19:02 man5
drwxr-xr-x  2 root  wheel   512 12 ноя 19:02 man8

Содержимое Makefile:

# $FreeBSD: head/ru_RU.KOI8-R/man/Makefile 38826 2012-05-17 19:12:14Z hrs $
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/Makefile,v 1.8 2007/11/21 
15:56:48 ru Exp $

BINDIR= ${SHAREDIR}/man/ru_RU.KOI8-R

SUBDIR= man1 man3 man5 man8

distrib-dirs:
         mkdir -p ${DESTDIR}${BINDIR}
         mtree -deU -f ${.CURDIR}/FRDP.man.dist -p ${DESTDIR}${BINDIR}

makedb:
         makewhatis ${DESTDIR}${BINDIR}

beforeinstall: distrib-dirs
afterinstall: makedb

.include <bsd.subdir.mk>

И выполнил сборку:

make
make distrib-dirs
make install
make clean|

После сборки все русское лягло в /usr/share/man/ru_RU.KOI8-R/ Нада сказать прилично перевели уже начиная с 4 ветки (man1 и man8 в размере выросли) Посмотрел размер командой du

du -nh /usr/share/man/ru_RU.KOI8-R

4,0k    /usr/share/man/ru_RU.KOI8-R/cat1
4,0k    /usr/share/man/ru_RU.KOI8-R/cat1aout
4,0k    /usr/share/man/ru_RU.KOI8-R/cat2
4,0k    /usr/share/man/ru_RU.KOI8-R/cat3
4,0k    /usr/share/man/ru_RU.KOI8-R/cat4/amd64
4,0k    /usr/share/man/ru_RU.KOI8-R/cat4/arm
4,0k    /usr/share/man/ru_RU.KOI8-R/cat4/i386
4,0k    /usr/share/man/ru_RU.KOI8-R/cat4/powerpc
4,0k    /usr/share/man/ru_RU.KOI8-R/cat4/sparc64
  24k    /usr/share/man/ru_RU.KOI8-R/cat4
4,0k    /usr/share/man/ru_RU.KOI8-R/cat5
4,0k    /usr/share/man/ru_RU.KOI8-R/cat6
4,0k    /usr/share/man/ru_RU.KOI8-R/cat7
4,0k    /usr/share/man/ru_RU.KOI8-R/cat8/amd64
4,0k    /usr/share/man/ru_RU.KOI8-R/cat8/i386
4,0k    /usr/share/man/ru_RU.KOI8-R/cat8/powerpc
4,0k    /usr/share/man/ru_RU.KOI8-R/cat8/sparc64
  20k    /usr/share/man/ru_RU.KOI8-R/cat8
4,0k    /usr/share/man/ru_RU.KOI8-R/cat9
*564k    /usr/share/man/ru_RU.KOI8-R/man1*
4,0k    /usr/share/man/ru_RU.KOI8-R/man1aout
4,0k    /usr/share/man/ru_RU.KOI8-R/man2
  12k    /usr/share/man/ru_RU.KOI8-R/man3
4,0k    /usr/share/man/ru_RU.KOI8-R/man4/amd64
4,0k    /usr/share/man/ru_RU.KOI8-R/man4/arm
4,0k    /usr/share/man/ru_RU.KOI8-R/man4/i386
4,0k    /usr/share/man/ru_RU.KOI8-R/man4/powerpc
4,0k    /usr/share/man/ru_RU.KOI8-R/man4/sparc64
  24k    /usr/share/man/ru_RU.KOI8-R/man4
8,0k    /usr/share/man/ru_RU.KOI8-R/man5
4,0k    /usr/share/man/ru_RU.KOI8-R/man6
4,0k    /usr/share/man/ru_RU.KOI8-R/man7
4,0k    /usr/share/man/ru_RU.KOI8-R/man8/amd64
4,0k    /usr/share/man/ru_RU.KOI8-R/man8/i386
4,0k    /usr/share/man/ru_RU.KOI8-R/man8/powerpc
4,0k    /usr/share/man/ru_RU.KOI8-R/man8/sparc64
*52k    /usr/share/man/ru_RU.KOI8-R/man8*
4,0k    /usr/share/man/ru_RU.KOI8-R/man9

Ну потом еще решил раскрасить маны в цвет чтобы было

 похоже как в линуске :-)

Для этого поставил из портов

|cd /usr/ports/sysutils/most
make install clean|

на запрос об опциях для libslang2 2.2.2 , я оставил всё по умолчанию:

[X] PCRE Include pcre support
[X] PNG Include png support
[X] ICONV Include iconv support
[ ] ONIG Include Oniguruma support

После установки |/usr/ports/sysutils/most |Посмотрел какую 9.2 версия ставит оболочку для рута (echo $shell)

root@gat:/usr/share/man/ru_RU.KOI8-R # echo $shell
*/bin/csh*

Видно что оболочка для рута *csh*

и затем внес изменения в файл

-rw-r--r-- 2 root wheel 968 12 ноя 19:10*.cshrc*

в каталоге /root

было :

setenv  EDITOR  vi
setenv  PAGER   more
setenv  BLOCKSIZE       K

стало :

setenv  EDITOR  ee
setenv  PAGER   most
setenv  BLOCKSIZE       K

поменял там заодно редактор для рута на "ee" так как "vi" я не совсем люблю.

Если бы шелл у рута был bash то нужно было бы делать чтото типа

|echo ?PAGER=most? >> ~/.profile
echo ?export PAGER? >> ~/.profile|

в /root

Для проверки работы проверил появился ли русский ман для команды df (в прежних версиях он точно был) и прочее (например man uptime).


Как видите все работает. Еше раз спасибо за совет. Точно так же думаю можно было бы собрать наверно и локуметацию в /usr/doc но я ее установил пакетом через

pkg_add -r freebsd-doc-ru

C порта /usr/ports/misc/freebsd-doc-ru/ было бы долго

Я немного счас подрабатываю в институте на кафедре где я когда то учился. И моим студентам больше нужны русские маны под рукой в консоли (особенно в начале освоения FreeBSD) чем документация которую они могут почитать в браузере на офицыальных ресурсах проекта FreeBSD или ее скачать.

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

Я еще раз проверил командой locale настройки консоли после русификации чтобы убедится что все правильно (Как то вчера об этом забыл написать)

root@gat:~ # locale

LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=

И посмотрел сколько русских ман-ов теперь есть в версии 9.2 Оказалось что уже 939 файлов лежит в /usr/share/man/ru_RU.KOI8-R/man1

Последний раз ето делал на 7-й ветке то было меньше. где-то около 700.с лишним Ну и тут удобно смотреть какой точно русский ман доступен например в списке файл есть kill.1.gz и kilall.1.tz они же ман для этих команд если нет на команду ман на русском в /usr/share/man/ru_RU.KOI8-R/man1 то отроется ман на английском языке из /usr/share/man/en.ISO8859-15/man1

_Тоесть если локаль русская то ищутся маны русские если их __ __нет то тогда cтандартно английские __ _ Проверим

root@gat:~ # ls -Al /usr/share/man/ru_RU.KOI8-R/man1/ | grep kill -r--r--r-- 1 root wheel 2356 12 ноя 19:02 kill.1.gz -r--r--r-- 1 root wheel 2643 12 ноя 19:02 killall.1.gz -r--r--r-- 2 root wheel 3753 12 ноя 19:02 pkill.1.gz -r--r--r-- 1 root wheel 2356 12 ноя 19:02 kilall.1.gz

На команду ls например нет русского мана в /usr/share/man/ru_RU.KOI8-R/man1

root@gat:~ # ls -Al /usr/share/man/ru_RU.KOI8-R/man1/ | grep ls -r--r--r-- 86 root wheel 3049 12 ноя 19:02 else.1.gz -r--r--r-- 1 root wheel 1560 12 ноя 19:02 false.1.gz -r--r--r-- 86 root wheel 3049 12 ноя 19:02 ls-F.1.gz -r--r--r-- 1 root wheel 755 12 ноя 19:02 lsvfs.1.gz

Но зато он есть в /usr/share/man/en.ISO8859-15/man1/

root@gat:~ # ls -Al /usr/share/man/en.ISO8859-15/man1/ | grep ls -r--r--r-- 86 root wheel 2672 27 сен 07:02 else.1.gz -r--r--r-- 1 root wheel 1232 27 сен 07:02 false.1.gz -r--r--r-- 86 root wheel 2672 27 сен 07:02 ls-F.1.gz -r--r--r-- 1 root wheel 6860 27 сен 07:00 ls.1.gz -r--r--r-- 1 root wheel 584 27 сен 07:03 lsvfs.1.gz

система будет по команде "man ls" раз локаль русская искать сначала ман файл ls.1.gz в /usr/share/man/ru_RU.KOI8-R/man1/ а раз его там нет то только потом будет искать английский стандартный вариант в /usr/share/man/en.ISO8859-15/man1/ и затем успешно его откроет. Тоесть важна правильная руссификация консоли и локали


root@gat:~ # ls -Al /usr/share/man/ru_RU.KOI8-R/man1 | more
total 936

-r--r--r--   2 root  wheel   3396 12 ноя 19:02 [.1.gz
-r--r--r--  86 root  wheel   3049 12 ноя 19:02 alias.1.gz

- и т д ---

-r--r--r-- 1 root wheel 1414 12 ноя 19:02 kenv.1.gz -r--r--r-- 1 root wheel 680 12 ноя 19:02 keylogin.1.gz -r--r--r-- 1 root wheel 970 12 ноя 19:02 keylogout.1.gz -r--r--r-- 1 root wheel 2356 12 ноя 19:02 kill.1.gz -r--r--r-- 1 root wheel 2643 12 ноя 19:02 killall.1.gz -r--r--r-- 1 root wheel 1086 12 ноя 19:02 ldd.1.gz -r--r--r-- 86 root wheel 3049 12 ноя 19:02 limit.1.gz -r--r--r-- 2 root wheel 3039 12 ноя 19:02 link.1.gz

-r--r--r-- 2 root wheel 3039 12 ноя 19:02 ln.1.gz



- и т д--- - -r--r--r-- 2 root wheel 3918 12 ноя 19:02 yppasswd.1.gz -r--r--r-- 1 root wheel 1814 12 ноя 19:02 ypwhich.1.gz root@gat:~ # </pre>

Если выложите то дадите ссылку. Сам почитаю. И людям посоветую

читаем русский ман командой

root@gat:~ # man man

И как видим там про поиск манов написано на нашем родном и могучем русском языке о чем я написал ранее

система будет по команде "man ls" раз локаль русская искать сначала ман файл ls.1.gz в /usr/share/man/ru_RU.KOI8-R/man1/ а раз его там нет то только потом будет искать английский стандартный вариант в /usr/share/man/en.ISO8859-15/man1/ и затем успешно его откроет. Тоесть важна правильная руссификация консоли и локали.

[править] Использование готового архива man

В продолжение темы решил выслать вам во вложении к письму весь свой архив с русскими манами который я "смейчил".

Путь к архиву:

Может тоже выложите у себя пусть народ пользуется Может кто то не захочет их "мейчить" так как я писал ну тогда пусть возьмет готовые, настроит себе "русскую локаль" так, как я опишу ниже и также вам писал раньше. Ну и тогда сразу он сможет пользоваться русскими ман-страницами.

Архив нужно положить в /usr/share/man/ потом "разтарить" в этом же каталоге

   tar -xf ru_RU.KOI8-R.tgz

потом проверить командой "locale" правильно ли настроена русская локализация (она же в народе называется "локаль") системы для отображения русских ман страниц, их поиска и кодировки Для этого нужно запуститить команду "locale" Вывод должен быть таким:

root@voe.lutsk.ua # locale
*LANG*=ru_RU.KOI8-R
*LC_CTYPE*="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
*LC_ALL=*

Для пояснения укажем следующее:

  • LC_ALL, LC_CTYPE, LANG* ----- это переменные которые задают

предпочтительный язык для справочных страниц при их вызове и использовании

Если это так то дальше сразу можно проверить открываются ли русские ман страницы которые были разархивированы. Выполнив стандартную команду работы с ман страницами "man man" Посмотреть насколько корректно они отображаются.

 root@gat # man man


Если все же вместо читабельного русского текста видно "крякозябры" то нужно правильно настроить консоль на русскую локализацию системы сделав по порядку следующие действия:

1 . в файле /etc.rc.conf правильно прописать шрифты и кодировки

Чтобы было так:

font8x16="cp866-8x16"

   scrnmap="koi8-r2cp866"
   keymap="ru.koi8-r"


2. в файле /etc/ttys прописать что о консоль будет у нас будет с русской локализацией и на 25 строк

      при указанном в шрифте в файле /etc/rc.conf    --- 

(font8x16="cp866-8x16)

Чтобы было так:

ttyv0   "/usr/libexec/getty Pc"         cons25r on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25r on  secure


3. выполнить следующие команды для указания переменных среды LANG

setenv LANG ru_RU.KOI8-R pw usermod root -L russian

4. перезапустить консоль командой:

/etc/rc.s/syscons


5. выйти из системы и потом снова в ней залогинится.

6. Проверить установки русской локализации которые задавались Для этого выполнить команду "locale".

Если все сделано правильно то ответ на эту команду обязательно для корректной работы русской локализации системы должно быть следующее:

    LANG=ru_RU.KOI8-R
    LC_CTYPE="ru_RU.KOI8-R"
    LC_COLLATE="ru_RU.KOI8-R"
    LC_TIME="ru_RU.KOI8-R"
    LC_NUMERIC="ru_RU.KOI8-R"
    LC_MONETARY="ru_RU.KOI8-R"
    LC_MESSAGES="ru_RU.KOI8-R"
    LC_ALL=


Ну и потом проверить открываются ли русские ман страницы и насколько коректно они обображаются. Для этого можно выполнить стандартную команду работы с ман страницами вызвав команду "man man".

Должно быть "все по-русски" ну кроме цвета. Цвет нужно настраивать отдельно.

Все описанное выше будет точно работать (ну кроме цвета конечно) Я это сегодня проверил на виртуальной тестовой машине на VirtualBOX Поставил на него специально старенькую FreeBSD 6.4 так как не у все же пользователей FreeBSD стоит на данный момент времени версия 9 или 9.2. Потом на закинул на тестовою манину 6.4 по ftp свой архив RU.KOI8-R.tgz который сделал на версии 9.2 распаковал его там и все заработало Так что те у кого версии ОС ниже 9.2 могут тоже пользоватся моим архивом.