dpkg
и apt
поверить в то, что какой-либо пакет установлен, даже если он пуст. Это позволяет удовлетворить зависимость от пакета, когда соответствующее программное обеспечение было установлено в обход системы управления пакетами. Хотя такой способ работает, его следует по возможности избегать, ведь нет никакой гарантии, что установленное вручную программное обеспечение ведет себя точно так же, как соответствующий пакет, и зависящие от него пакеты могут работать некоректно.
equivs-control
и equivs-build
(из пакета equivs). Команда equivs-control файл
создает заголовочный файл пакета Debian, который следует отредактировть таким образом, чтобы в нём содержалось название неоходимого пакета, номер его версии, имя сопровождающего, зависимости и описание. Прочие поля без значения по умолчанию являются необязательными и их можно удалить. Поля Copyright
, Changelog
, Readme
и Extra-Files
являются нестандартными в пакетах Debian; они имеют смысл только в рамках equivs-build
и не будут сохранены в заголовках созданного пакета.
Пример 15.2. Заголовочный файл пакета-пустышки libxml-libxml-perl
Section: perl Priority: optional Standards-Version: 3.8.4 Package: libxml-libxml-perl Version: 1.57-1 Maintainer: Raphael Hertzog <hertzog@debian.org> Depends: libxml2 (>= 2.6.6) Architecture: all Description: Fake package - module manually installed in site_perl This is a fake package to let the packaging system believe that this Debian package is installed. . In fact, the package is not installed since a newer version of the module has been manually compiled & installed in the site_perl directory.
equivs-build файл
. Voilà: пакет создан в текущем каталоге и с ним можно работать, как с любым другим пакетом Debian.
falcot-data-1.0
для целевого пакета исходного кода. Пакет, логично, будет называться falcot-data
и иметь номер версии 1.0
. Затем администратор размещает файлы документов в подкаталоге data
. После этого вызывается команда dh_make
(из пакета dh-make) для того, чтобы добавить файлы, необходимые для создания пакета, которые будут сохранены в подкаталоге debian
:
$
cd falcot-data-1.0
$
dh_make --native
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs? [s/i/m/l/k/n/b]
i
Maintainer name : Raphael Hertzog Email-Address : hertzog@debian.org Date : Mon, 11 Apr 2011 15:11:36 +0200 Package Name : falcot-data Version : 1.0 License : blank Usind dpatch : no Type of Package : Independent Hit <enter> to confirm: Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the falcot-data Makefiles install into $DESTDIR and not in / . $
Architecture: any
). indep binary аналогичен, но соответствует единичному двоичному пакету, не зависящему от целевой архитектуры (Architecture: all
). В этом случае последний выбор более актуален, поскольку пакет содержит только документы и никаких двоичных программ, так что он может быть с одинаковым успехом использован на компьютерах всех архитектур.
dh_make
создала подкаталог debian
со множеством файлов. Некоторые из них являются обязательными, в частности, rules
, control
, changelog
и copyright
. Файлы с расширением .ex
— это примеры файлов, которые могут быть использованы путем их модификации (и удаления расширения) при необходимости. Когда они не нужны, рекомендуется удалить их. Файл compat
следует оставить, так как требуется для корректного функционирования набора программ debhelper (все они начинаются с префикса dh_
), используемого на различных этапах процесса сборки пакета.
copyright
должен содержать информацию об авторах документов, включенных в пакет, а также соответствующих лицензиях. В нашем случае это внутренние документы, и их использование ограничено пределами компании Falcot Corp. Файл changelog
по умолчанию в целом нам подходит; замены «Initial release» на более многословное объяснение и изменение дистрибутива с unstable
на internal
вполне достаточно. Файл control
также был изменён: раздел был изменён на misc, а поля Homepage
, Vcs-Git
и Vcs-Browser
были удалены. В поле Depends
было указано iceweasel | www-browser
чтобы обеспечить наличие веб-браузера, способного отображать документы, поставляемые в пакете.
Пример 15.3. Файл control
Source: falcot-data Section: misc Priority: optional Maintainer: Raphael Hertzog <hertzog@debian.org> Build-Depends: debhelper (>= 7.0.50~) Standards-Version: 3.8.4 Package: falcot-data Architecture: all Depends: iceweasel | www-browser, ${misc:Depends} Description: Internal Falcot Corp Documentation This package provides several documents describing the internal structure at Falcot Corp. This includes: - organization diagram - contacts for each department. . These documents MUST NOT leave the company. Their use is INTERNAL ONLY.
Пример 15.4. Файл changelog
falcot-data (1.0) internal; urgency=low * Initial Release. * Let's start with few documents: - internal company structure; - contacts for each department. -- Raphael Hertzog <hertzog@debian.org> Mon, 11 Apr 2011 20:46:33 +0200
Пример 15.5. Файл copyright
This work was packaged for Debian by Raphael Hertzog <hertzog@debian.org> on Mon, 11 Apr 2011 20:46:33 +0200 Copyright: Copyright (C) 2004-2011 Falcot Corp License: All rights reserved.
rules
обычно содержит набор правил, используемых для конфигурирования, сборки и установки программного обеспечения в выделенный подкаталог (названный именем собранного двоичного пакета). Содержимое этого подкаталога затем архивируется в пакет Debian, как если бы это был корневой каталог файловой системы. В нашем случае файлы будут установлены в подкаталог debian/falcot-data/usr/share/falcot-data/
, чтобы установка созданного пакета развернула файлы в /usr/share/falcot-data/
. Файл rules
используется в качестве Makefile
с несколькими стандартными целями (включая clean
и binary
, используемые соответственно для очистки каталога с исходным кодом и создания двоичного пакета).
debhelper
. Так обстоит дело с файлами, созданными с помощью dh_make
. Чтобы установить наши файлы, мы просто настроим поведение команды dh_install
, создав следующий файл debian/falcot-data.install
:
data/* usr/share/falcot-data/
debian/menu.ex
, удалив расширение, и отредактировать его следующим образом:
Пример 15.6. Файл menu
?package(falcot-data):needs=X11|wm section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/x-www-browser /usr/share/falcot-data/index.html" ?package(falcot-data):needs=text section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/www-browser /usr/share/falcot-data/index.html"
needs
со значением X11|wm
указывает, что эта запись имеет смысл только в графическом интерфейсе. Поэтому она будет добавлена только в меню графических (X11) приложений и оконных менеджеров (wm
). Поле section
определяет, где именно в меню запись должна отображаться. В нашем случае запись будет в меню Справка. Поле title
содержит текст, который будет отображаться в меню. Наконец, в поле command
указывается команда, запускаемая, когда пользователь выбирает пункт меню.
debian/menu
достаточно, чтобы включить меню в пакете, так как команда dh_installmenu
автоматически вызывается через dh
в процессе сборки пакета.
dpkg-buildpackage -us -uc
в каталоге falcot-data-1.0
.