Open Way | Systems | Distro | Shell | Desktop | Applications
Network | Development | Download | OfftopicКарта сайта
FreeNotesФорум POSIX.ru
На главную страницу

Построение FreeBSD-документации

Артем Носов aka Chip
2004

Рано или поздно перед многими FreeBSD пользователями встает проблема обновления документации, расположенной в /usr/share/doc. Процедура ее построения предельно проста, но, к сожалению, не описана (или я ошибаюсь?) на просторах Рунета.

Первое, что нам потребуется - это установленный пакет cvsup (или cvsup-without-gui, это уже на ваш вкус). Наиболее простым в этом случае будет вариант с установкой его из пакета (package). Связанно это с тем, что cvsup при сборке из дерева портов потянет за собой достаточно громоздкий дистрибутив языка modula. Для установки (в виде пакета) достаточно выполнить:

$ pkg_add -r cvsup

Никаких проблем на этом шаге не должно возникнуть, а если что-то и случиться - внимательно изучите ошибки/предупреждения, выдаваемые pkg_add. Для тех же, кто решил устанавливать cvsup из дерева портов, достаточно выполнить:

$ cd /usr/ports/net/cvsup &&
$ make all install clean

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

$ cd /usr/ports/textproc/docproj &&
$ make JADETEX=no install clean

Думаю, не нужно объяснять, что все описанные действия выполняются от пользователя root и с уже установленным соединеним в интернет, если, конечно, вы не пользуетесь опциями dial-on-demand (звонок по требованию).

От редактора: а еще можно заблаговременно скачать все потребные исходники и разместить их в каталоге /usr/ports/distfiles/ - Алексей Федорчук.

Итак, cvsup и docproj установлены или уже компилируются (для случая портов), мы же сосредоточимся на настройке sup-файла, необходимого для получения по протоколу cvsup файлов *.sgml (на их базе будет строиться наша документация). Расположим файл следующего содержания:

  *default  host=cvsup5.ru.freebsd.org
  *default  base=/usr
  *default  prefix=/usr
  *default  release=cvs
  *default  compress

  *default  tag=.
  *default  delete use-rel-suffix

  # Miscellaneous files at the top of /usr/ports
  doc-all

в районе /usr/local/etc/cvsup/doc-cvsup. Как вариант, могу предложить воспользоваться файлом, располагающимся по адресу /usr/share/examples/cvsup/doc-supfile. Основное его отличие - подробные комментарии и незаполенная сточка *default host,- в остальном же он полностью идентичен.

В принципе, на этом можно было остановиться и приступить к процедуре получения sgml-файлов, но не каждому по душе тянуть файлы, которыми он даже не воспользуются. О чем это я? Да о том, что документация проекта FreeBSD включает в себя множество языков, о которых некоторые и не слышали (включая меня :)

Решение, как и все в FreeBSD, лежит на поверхности - refuse-файл используемый cvsup'ом. Не вдаваясь в подробности, о которых можно узнать в полной мере на man-страницах cvsup'a, местоположение refuse файла определить очень просто. Достаточно взять строчку из sup-файла (в нашем случае doc-cvsup), которая указывает на "базовое" расположение (*default base=/usr) sup-директории и добавить к ней sup/refuse (немножко сумбурно, но поверьте, все гораздо проще, чем кажется :). Т.е. для нашего случая получим:

  /usr/sup/refuse

С местоположение определились, осталось "наполнить" его соотвествующим контентом. Я отбросил все языки за исключением русского и английского и получил файл (/usr/sup/refuse) следующего содержания:

  doc/de
  doc/de_*
  doc/es
  doc/es_*
  doc/el_*
  doc/fr_*
  doc/fr_*
  doc/it
  doc/it_*
  doc/ja
  doc/ja_*
  doc/nl
  doc/nl_*
  doc/sr
  doc/sr_*
  doc/zh_*

Важное замечание: refuse-файл не может содержать комментариев!

Итак, мы вплотную подошли к процедуре получения файлов документации. Вызвав cvsup и в качестве аргумента передав ему наш doc-cvsup файл:

  cvsup -g -L 2 /usr/local/cvsup/doc-cvsup

через несколько минут (в зависимости от скорости вашего соединения) получим локальную копию sgml-файлов проекта документирования FreeBSD, располагающуюся в /usr/doc.

$ ls /usr/doc/
  Makefile         en_US.ISO8859-1/ ru_RU.KOI8-R/
  README           release/         share/
  ~ % 

Как я ранее отмечал, из всех возможных языков я оставил 2-а: ru и en. Добавив следующую строчку в /etc/make.conf:

  DOC_LANG=	en_US.ISO8859-1 ru_RU.KOI8-R

мы оповестим make-утилиту, что нам требуется сборка только этих 2-х языков. Иначе make завершится критической ошибкой.

Завершающий аккорд - построение документации:

$ cd /usr/doc &&
$ make FORMATS="html" &&
$ make FORMATS="html" install clean

В ходе сборки может проскакивать следующая ошибка:

  *** Error code 1 (ignored)

Как и указывается - ее достаточно просто проигнорировать. Все! теперь "свежая" документация доступна в /usr/share/doc.

В следующей заметке я остановлюсь на доступных форматах сборки и других "тонких" моментах. Жду Ваших предложений и замечаний.


Распродажа листогибочного - листогиб. Станки металлообрабатывающие. . пакеты-майки производство пакетов пвд. . Православный интернет-магазин, миллионы товаров.