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: 4.6.2 Package: libxml-libxml-perl Version: 2.0207-1 Maintainer: Raphael Hertzog <hertzog@debian.org> Depends: libxml2 (>= 2.9.10) 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.
$
equivs-build file
dpkg-buildpackage: info: source package libxml-libxml-perl dpkg-buildpackage: info: source version 2.0207-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Raphael Hertzog <hertzog@debian.org> dpkg-buildpackage: info: host architecture amd64 dpkg-source --before-build . debian/rules clean dh clean dh_clean debian/rules binary dh binary dh_update_autotools_config dh_autoreconf create-stamp debian/debhelper-build-stamp dh_prep dh_auto_install --destdir=debian/libxml-libxml-perl/ dh_install dh_installdocs dh_installchangelogs dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'libxml-libxml-perl' in '../libxml-libxml-perl_2.0207-1_all.deb'. dpkg-genbuildinfo --build=binary -O../libxml-libxml-perl_2.0207-1_amd64.buildinfo dpkg-genchanges --build=binary -O../libxml-libxml-perl_2.0207-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!
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, indep, library, python) [s/i/l/p]?
i
Maintainer Name : Raphael Hertzog Email-Address : hertzog@debian.org Date : Sun, 26 May 2024 21:48:41 +0100 Package Name : falcot-data Version : 1.0 License : gpl3 Package Type : indep Are the details correct? [Y/n/q] Currently there is not top level Makefile. This may require additional tuning Done. Please edit the files in the debian/ subdirectory now. $
Architecture: all
) в debian/control
). single аналогичен и приводит к созданию единого двоичного пакета, который зависит от целевой архитектуры (Architecture: any
). В этом случае первый выбор более актуален, поскольку пакет содержит только документы и никаких двоичных программ, так что он может быть с одинаковым успехом использован на компьютерах для всех архитектур.
dh_make
создала поддиректорию debian
со многими файлами. Некоторые из них необходимы, в частности правил
, control
, changelog
и copyright
. Файлы с расширением .ex
являются примерами файлов, которые могут быть использованы путем их изменения (и удаления расширения), когда это уместно. Когда они не нужны, их рекомендуется удалить. compat
файл больше не используется и не создается. Вместо определения уровня совместимости debhelper как числа в этом файле, он теперь определяется как зависимость от debhelper-compat в виртуальном пакете Build-Depends
в debian/control
.
copyright
должен содержать информацию об авторах документов, включённых в пакет, а также соответствующие авторские права и лицензии. В нашем случае это внутренние документы, и их использование ограничено пределами компании Falcot Corp. Формат по умолчанию, используемый для этого файла, определён в поле Format
.
changelog
, как правило, уместен; замена “Initial release” более подробным объяснением и изменение распространения с UNRELEASED
или unstable
на имя целевого релиза достаточно.
control
также должен быть обновлён: поле Section
может быть изменено на misc и Homepage
, Vcs-Git
и Vcs-Browser
. Поля Depends
были дополнены с firefox-esr | www-browser
, чтобы обеспечить наличие веб-браузера, способного отображать документы в пакете. Если пакет не требует запуска каких-либо команд от root-а (см. ИНСТРУМЕНТ fakeroot
), поле Rules-Requires-Root
может быть оставлено как есть.
Пример 15.3. Файл control
Source: falcot-data Section: misc Priority: optional Maintainer: Raphael Hertzog <hertzog@debian.org> Build-Depends: debhelper-compat (= 13) Standards-Version: 4.6.2 Rules-Requires-Root: no Package: falcot-data Architecture: all Depends: firefox-esr | 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) bookworm; urgency=low * Initial Release. * Let's start with few documents: - internal company structure; - contacts for each department. -- Raphael Hertzog <hertzog@debian.org> Sun, 26 May 2024 21:48:41 +0100
Пример 15.5. Файл copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: falcot-data Files: * Copyright: 2004-2024 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/
falcot-data.desktop
, установим в /usr/share/applications
, добавив вторую строчку в debian/falcot-data.install
.
Пример 15.6. Файл falcot-data.desktop
[Desktop Entry] Name=Internal Falcot Corp Documentation Name[ru]=Внутренняя документация Falcot Corp Comment=Starts a browser to read the documentation Comment[ru]=Запускает браузер для чтения документации Exec=x-www-browser /usr/share/falcot-data/index.html Terminal=false Type=Application Categories=Documentation;
debian/falcot-data.install
выглядит следующим образом:
data/* usr/share/falcot-data/ falcot-data.desktop usr/share/applications/
dpkg-buildpackage -us -uc
в каталоге falcot-data-1.0
.