Глава 5. Другие файлы в каталоге debian/

Содержание

5.1. Файл README.Debian
5.2. Файл compat
5.3. Файл conffiles
5.4. Файлы пакет.cron.*
5.5. Файл dirs
5.6. Файл пакет.doc-base
5.7. Файл docs
5.8. Файлы emacsen-*
5.9. Файл пакет.examples
5.10. Файлы пакет.init и пакет.default
5.11. Файл install
5.12. Файл пакет.info
5.13. Файл пакет.links
5.14. Файлы {пакет.,source/}lintian-overrides
5.15. Файлы manpage.*
5.15.1. Файл manpage.1.ex
5.15.2. Файл manpage.sgml.ex
5.15.3. Файл manpage.xml.ex
5.16. Файл пакет.manpages
5.17. Файл menu
5.18. Файл NEWS
5.19. Файлы {pre|post}{inst|rm}
5.20. Файл пакет.symbols
5.21. Файл TODO
5.22. Файл watch
5.23. Файл source/format
5.24. Файл source/local-options
5.25. Файл source/options
5.26. Файлы patches/*

Для контроля большей части того, что делает debhelper при сборке пакетов, служат необязательные файлы настройки в каталоге debian. В этой главе будет рассмотрено, для чего нужен каждый из них и его формат. В руководстве по политике Debian и справочнике разработчика Debian приведены общие принципы пакетирования.

При запуске команда dh_make в каталоге debian создаёт несколько шаблонов файлов настройки. Большинство из них имеет расширение .ex. Некоторые имена файлов начинаются именем двоичного пакета. Рассмотрим каждый из них [54].

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

Если вы хотите активировать некоторые из них, выполните следующие действия:

Любые файлы настройки debhelper без префикса имя пакета как, например, install, относятся к первому двоичному пакету. Если есть несколько двоичных пакетов, их файлы настройки могут быть созданы с указанием их имени в имени файла настройки, например, пакет-1.install, пакет-2.install и т.д.

5.1. Файл README.Debian

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

Программа dh_make создала файл, похожий на этот:

gentoo for Debian
-----------------
<possible notes regarding this package - if none, delete this file>
 -- Josip Rodin <joy-mg@debian.org>, Wed, 11 Nov 1998 21:02:14 +0100

Если вам нечего сюда написать, удалите этот файл. Смотрите dh_installdocs(1).

5.2. Файл compat

Файл compat определяет уровень совместимости debhelper. В настоящее время вы должны указывать уровень debhelper v7 следующим образом:

$ echo 7 > debian/compat

5.3. Файл conffiles

Бывает очень обидно, когда тратишь много времени и усилий на настройку программы, а при очередном обновлении все настройки исчезают. Debian предлагает решение этой проблемы через механизм пометки файлов как настроечных — conffiles [55]. Для таких файлов при обновлении пакета вам будет задан вопрос, нужно ли заменить старые файлы теми, что включены в новый пакет.

Программа dh_installdeb(1) автоматически помечает все файлы в каталоге /etc как файлы conffiles, так что, если у вашей программы есть файлы conffiles только там, вам не обязательно указывать их в этом файле. Для большинства типов пакетов единственное место (и для них так должно быть всегда), в котором содержатся файлы conffiles, это /etc и, таким образом, в этом файле нет необходимости.

Если ваша программа не только использует файлы настройки, но и изменяет их, будет лучше не отмечать их как conffiles, так как в этом случае dpkg каждый раз будет просить пользователя проверить изменения.

Если программа, которую вы упаковываете, требует от пользователя изменить файлы настройки в каталоге /etc, существует два популярных способа не отмечать их как conffiles, чтобы подавить вопросы со стороны dpkg:

  • Создать символьную ссылку в каталоге /etc, указывающую на файл в каталоге /var, генерируемый сценариями сопровождающего.

  • Сгенерировать файл в каталоге /etc с помощью сценариев сопровождающего.

Информацию о сценариях сопровождающего смотрите в Раздел 5.19, «Файлы {pre|post}{inst|rm}».

5.4. Файлы пакет.cron.*

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

  • пакет.cron.hourly — устанавливается как /etc/cron.hourly/пакет; выполняется один раз в час.

  • пакет.cron.daily — устанавливается как /etc/cron.daily/пакет; выполняется один раз в день.

  • пакет.cron.weekly — устанавливается как /etc/cron.weekly/пакет; выполняется один раз в неделю.

  • пакет.cron.monthly — устанавливается как /etc/cron.monthly/пакет; выполняется один раз в месяц.

  • пакет.cron.d — устанавливается как /etc/cron.d/пакет; выполняется в любое другое время.

Большинство этих файлов являются сценариями оболочки, за исключением пакет.cron.d, который должен иметь формат crontab(5).

Для архивирования журнальных файлов никаких файлов cron.* задавать ненужно — для этого есть другие средства (смотрите dh_installlogrotate(1) и logrotate(8)).

5.5. Файл dirs

В этом файле указываются каталоги, которые необходимы для обычной установки (make install DESTDIR=..., вызываемая dh_auto_install), но которые автоматически не создаются. Обычно, это указывает на проблему в Makefile.

Файлы, указанные в файле install, не нуждаются в предварительном создании каталогов. Смотрите Раздел 5.11, «Файл install».

Для начала лучше попробовать запустить установку и использовать этот файл, только если есть проблемы. В начале имён каталогов, перечисляемых в файле dirs, косая черта не указывается.

5.6. Файл пакет.doc-base

Если ваш пакет содержит документацию, отличную от справочных страниц или файлов в формате info, то для её регистрации в системе вы должны воспользоваться файлом doc-base; это позволит пользователю найти её при помощи, например, dhelp(1), dwww(1) или doccentral(1).

Обычно, к таким файлам относятся файлы в форматах HTML, PS и PDF, помещаемые в /usr/share/doc/имяпакета/.

Вот как выглядит файл gentoo, входящий в пакет gentoo.doc-base:

Document: gentoo
Title: Gentoo Manual
Author: Emil Brink
Abstract: This manual describes what Gentoo is, and how it can be used.
Section: File Management
Format: HTML
Index: /usr/share/doc/gentoo/html/index.html
Files: /usr/share/doc/gentoo/html/*.html

Формат этого файла описан в справочной странице install-docs(8), а также в локальной копии руководства Debian по doc-base из пакета doc-base.

Подробная информация по установке дополнительной документации приведена в Раздел 3.3, «Установка файлов в их каталоги назначения».

5.7. Файл docs

В этом файле указаны имена файлов документации, которые можно установить во временный каталог с помощью dh_installdocs(1).

По умолчанию будут включены все файлы, имеющиеся в самом верхнем каталоге с исходным кодом, а именно BUGS, README*, TODO и т.д.

Для пакета gentoo также включаются несколько других файлов:

BUGS
CONFIG-CHANGES
CREDITS
NEWS
README
README.gtkrc
TODO

5.8. Файлы emacsen-*

В этом файле указываются файлы для Emacs, которые могут быть скомпилированы во время установки пакета.

Они устанавливаются во временный каталог при помощи dh_installemacsen(1).

Если они вам не нужны, удалите их.

5.9. Файл пакет.examples

Команда dh_installexamples(1) устанавливает файлы и каталоги, указанные в этом файле, как файлы примеров.

5.10. Файлы пакет.init и пакет.default

Если ваш пакет содержит службу и её необходимо запускать при старте системы, вероятнее всего, вы не обратили внимания на мой изначальный совет, не так ли? :-)

Файл пакет.init устанавливается как сценарий /etc/init.d/пакет для запуска и остановки службы. Довольно общий его шаблон создаётся командой dh_make в файле init.d.ex. Вам придётся его переименовать и отредактировать, обеспечив соблюдение стандарта заголовка согласно Linux Standard Base (LSB). Он устанавливается во временный каталог с помощью dh_installinit(1).

Файл пакет.default будет установлен в /etc/default/пакет. В этом файле хранятся значения по умолчанию, используемые сценарием инициализации. В большинстве случаев, файл пакет.default используется для отключения запуска службы, установки некоторых флагов по умолчанию или времени ожидания. Если ваш сценарий инициализации имеет какие-либо настраиваемые параметры, вам надо поместить их в файл пакет.default, а не в сам сценарий запуска.

Если с оригинальной программой поставляется сценарий инициализации, то вы можете использовать и его. Если он вам не подходит, то создайте свой в файле с именем пакет.init. Однако, если оригинальный сценарий инициализации хорошо написан и устанавливается в правильное место, вам всё ещё нужно установить символьные ссылки в rc*. Для этого замените dh_installinit в файле rules на следующие строки:

override_dh_installinit:
        dh_installinit --onlyscripts

Если сценарий инициализации не требуется, удалите эти файлы.

5.11. Файл install

Если есть файлы, которые необходимо установить в пакет, но стандартная команда make install не делает этого, поместите их имена и пути назначения в файл install. Они устанавливаются при помощи dh_install(1)[56]. В первую очередь, вы должны проверить, нет ли более подходящего способа это сделать. Например, файлы документации должны находиться в файле docs, а не в этом.

В файле install для каждого устанавливаемого файла отводится одна строка; в ней задаётся имя файла (относительно верхнего каталога сборки), потом пробел, потом установочный каталог (относительно каталога установки). Например, если при установке не устанавливается src/bar, то файл install будет выглядеть так:

src/bar usr/bin

В результате после установки пакета в системе появится исполняемая команда /usr/bin/bar.

Также, в файле install можно указывать только имя файла без каталога установки, если не менялся относительный путь. Такой формат, обычно, используется для большого пакета, в котором результат сборки разбивается на несколько двоичных пакетов; список устанавливаемых файлов помещается в соответствующий файл пакет-1.install, пакет-2.install и т.д.

Если команда dh_install не находит файлы в текущем каталоге, то она ищет их в debian/tmp (или в любом другом месте, указанном в --sourcedir).

5.12. Файл пакет.info

Если у вашего пакета есть страницы в формате info, то их нужно устанавливать при помощи dh_installinfo(1), перечислив их в файле пакет.info.

5.13. Файл пакет.links

Если вам, как сопровождающему пакета, нужно создать дополнительные символьные ссылки в каталогах сборки пакета, установите их с помощью dh_link(1), перечислив полные пути файлов источника и назначения в файле пакет.links.

5.14. Файлы {пакет.,source/}lintian-overrides

Если lintian находит ошибки, хотя для этого случая в политике Debian разрешены исключения, то можно использовать файл пакет.lintian-overrides или source/lintian-overrides, чтобы убрать подобные сообщения. Прочтите руководство пользователя Lintian (/usr/share/doc/lintian/lintian.html/index.html) и не сообщайте о некорректности работы программы проверки.

Файл пакет.lintian-overrides предназначен для двоичного пакета и устанавливается в usr/share/lintian/overrides/пакет с помощью команды dh_lintian.

Файл source/lintian-overrides предназначен для пакета с исходным кодом. Он не устанавливается.

5.15. Файлы manpage.*

Для каждой программы должна быть справочная страница. Если её нет, её необходимо создать. Команда dh_make создаёт несколько шаблонов справочных страниц. Они должны быть скопированы и отредактированы для каждой команды, не имеющей собственной справочной страницы. Проверьте, что удалили неиспользованные шаблоны.

5.15.1. Файл manpage.1.ex

Справочные страницы, как правило, пишутся на языке разметки nroff(1). Файл шаблона manpage.1.ex также написан на nroff. Смотрите справочную страницу man(7), в которой приведено краткое описание действий по редактированию подобных файлов.

Окончательное имя файла справочной страницы должно включать имя документируемой программы, поэтому мы переименуем её с manpage на gentoo. Имя файла также включает .1 в качестве первого суффикса, который означает, что эта справочная страница описывает пользовательскую команду. Убедитесь, что используется правильный раздел. Вот короткий список разделов справочных страниц:

РазделОписаниеПримечания
1Команды пользователяЗапускаемые команды или сценарии
2Системные вызовыФункции, предоставляемые ядром
3Библиотечные вызовыФункции, предоставляемые системными библиотеками
4Специальные файлыОбычно находятся в каталоге /dev
5Форматы файловНапример, формат /etc/passwd
6ИгрыИгры и другие несерьёзные программы
7Пакеты макросовНапример, макросы man
8Системное администрированиеПрограммы, обычно запускаемые только суперпользователем
9Функции ядраНестандартные вызовы и внутреннее устройство

Таким образом, справочная страница для gentoo должна называться gentoo.1. Если в исходном коде нет справочной страницы gentoo.1, то её нужно создать путём переименовывания шаблона manpage.1.ex в gentoo.1 и затем изменить его, используя информацию из примера и документации к исходной программе.

Также, вы можете использовать команду help2man для генерации справочной страницы, которая для создания использует результат запуска команды с параметрами --help и --version [57].

5.15.2. Файл manpage.sgml.ex

Если вы предпочитаете использовать SGML вместо nroff, то можете использовать шаблон manpage.sgml.ex. Для этого необходимо:

  • переименовать файл в gentoo.sgml;

  • установить пакет docbook-to-man;

  • в файл control добавить docbook-to-man в строку Build-Depends;

  • добавить цель override_dh_auto_build в файл rules:

    override_dh_auto_build:
            docbook-to-man debian/gentoo.sgml > debian/gentoo.1
            dh_auto_build
    

5.15.3. Файл manpage.xml.ex

Если вы предпочитаете использовать XML вместо SGML, то можете использовать шаблон manpage.xml.ex. Для этого необходимо:

  • переименовать исходный файл в gentoo.1.xml;

  • установить пакет docbook-xsl и обработчик XSLT (рекомендуется xsltproc);

  • в файл control добавить пакеты docbook-xsl, docbook-xml и xsltproc в строку Build-Depends;

  • добавить цель override_dh_auto_build в файл rules:

    override_dh_auto_build:
            xsltproc --nonet \
             --param make.year.ranges 1 \
             --param make.single.year.ranges 1 \
             --param man.charmap.use.subset 0 \
             -o debian/ \
    http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl\
            debian/gentoo.1.xml
            dh_auto_build
    

5.16. Файл пакет.manpages

Если ваш пакет содержит справочные страницы, то их следует устанавливать с помощью dh_installman(1), перечислив в файле пакет.manpages.

Чтобы установить справочную страницу doc/gentoo.1 для пакета gentoo, создайте следующий файл gentoo.manpages:

docs/gentoo.1

5.17. Файл menu

Пользователи X Window System, обычно, используют диспетчеры окон с меню, которое может быть настроено для запуска программ. Если у них установлен пакет Debian menu, то каждая установленная программа будет доступна из меню.

Вот стандартный файл menu.ex, который создала программа dh_make:

?package(gentoo):needs=X11|text|vc|wm \
        section=Applications/see-menu-manual\
        title=gentoo command=/usr/bin/gentoo

Первое поле после двоеточия — это needs, которое указывает тип интерфейса, необходимого программе. Измените его на приведённые варианты, например text или X11.

В поле section задаются пункты меню и подменю, где должна появиться программа [58].

В поле title указывается название программы. Вы можете начать его с заглавной буквы, если вы хотите. Используйте короткое название.

И, наконец, поле command — команда, которая запускает программу.

Давайте переименуем файл в menu и изменим запись в меню:

?package(gentoo): needs=X11 \
        section=Applications/Tools \
        title=Gentoo command=gentoo

Также вы можете добавить другие поля, такие как longtitle, icon, hints и т.д. Подробную информацию можно найти в dh_installmenu(1), menufile(5), update-menus(1) и в дополнительной политике Debian по меню.

5.18. Файл NEWS

Этот файл устанавливается командой dh_installchangelogs(1).

5.19. Файлы {pre|post}{inst|rm}

Файлы postinst, preinst, postrm и prerm [59] называются сценариями сопровождающего. Эти сценарии находятся в управляющей области пакета и запускаются программой dpkg при установке, обновлении или удалении пакета.

Как начинающему сопровождающему вам следует избегать ручной правки сценариев сопровождающего, так как они имеют тенденцию усложняться. Более подробную информацию смотрите в руководстве по политике Debian, глава 6 «Сценарии сопровождающего пакета и процесс установки», и взгляните на файлы примеров