Глава 15. Страница руководства debmake(1)

Содержание

15.1. НАЗВАНИЕ
15.2. СИНТАКСИС
15.3. ОПИСАНИЕ
15.3.1. необязательные аргументы:
15.4. ПРИМЕРЫ
15.5. ВСПОМОГАТЕЛЬНЫЕ ПАКЕТЫ
15.6. ПРЕДОСТЕРЕЖЕНИЯ
15.7. ОТЛАДКА
15.8. АВТОР
15.9. ЛИЦЕНЗИЯ
15.10. СМОТРИТЕ ТАКЖЕ

debmake - program to make a Debian source package

debmake [-h] [-n | -a package-version.orig.tar.gz | -d | -t ] [-p package] [-u version] [-r revision] [-z extension] [-b "binarypackage[:type], …​]" [-e [email protected]] [-f "firstname lastname"] [-i "buildtool" | -j] [-m] [-o file] [-q] [-s] [-v] [-w "addon, …​"] [-x [01234]] [-y] [-T] [-B]

debmake помогает собрать пакет Debian из исходного кода основной ветки разработки. Обычно это делается следующим образом:

  • Загружается tar-архив основной ветки разработки в виде файла пакет-версия.tar.gz.
  • Исходный код распаковывается, создаются файлы в каталоге пакет-версия/.
  • Вызывается debmake в каталоге пакет-версия/, возможно, без аргументов.
  • Файлы в каталоге package-version/debian/ настраиваются вручную.
  • dpkg-buildpackage (usually from its wrapper debuild or sbuild) is invoked in the package-version/ directory to make Debian packages.

Make sure to protect the arguments of the -b, -f, and -w options from shell interference by quoting them properly.

Recently, the upstream may release its source code using the Git repository only without the tarball. debmake can offer a way to work with this situation:

  • «git clone https://git.site.org/project/package.git» downloads upstream source to the package/ directory.
  • «cd project/ ; debmake -u version --tar ; cd -» generates the package-version.tar.xz file, the package_version.orig.tar.xz symlink, and the package-version/ directory.
  • Files in the package-version/debian/ directory shall be manually adjusted.
  • dpkg-buildpackage (usually from its wrapper debuild or sbuild) is invoked in the package-version/ directory to make Debian packages.

Other tools also offer ways to obtain the upstream tarball and creating required symlink to build a Debian package depending on your workflow. For example, origtargz, mk-origtargz, git-deborig, and pristine-tar.

-h, --help
показать справочное сообщение и выйти.
-n, --native

make a native Debian source package without .orig.tar.gz. This makes a Debian source format «3.0 (native)» package.

If you are thinking of packaging a Debian-specific source tree with debian/ in it into a native Debian package, please think otherwise. You can use the «debmake -d -i debuild» or «debmake -t -i debuild» commands to make a Debian non-native package using the Debian source format «3.0 (quilt)» The only difference is that the debian/changelog file must use the non-native version scheme: version-revision. The non-native package is more friendly to downstream distributions.

-a пакет-версия.tar.gz, --archive пакет-версия.tar.gz

использовать непосредственно tar-архив с исходным кодом основной ветки. (отменяются опции -p, -u, -z)

The upstream tarball may be specified as package_version.orig.tar.gz and tar.gz. For other cases, it may be tar.bz2, or tar.xz.

Если в имени указанного tar-архива основной ветки содержатся буквы в верхнем регистре, то в имени пакета Debian они будут преобразованы в буквы нижнего регистра.

If the specified argument is the URL (http://, https://, or ftp://) to the upstream tarball, the upstream tarball is downloaded from the URL using wget or curl.

-d, --dist

run the «make dist» command equivalents first to generate the upstream tarball and use it.

The «debmake -d» command is designed to run in the package/ directory hosting the upstream VCS with the build system supporting the «make dist» command equivalents. (automake/autoconf, …​)

-t, --tar

run the «tar» command to generate the upstream tarball and use it.

The «debmake -t» command is designed to run in the package/ directory hosting the upstream VCS. Unless you provide the upstream version with the -u option or with the debian/changelog file, a snapshot upstream version is generated in the 0\~%y%m%d%H%M format, e.g., 0~1403012359, from the UTC date and time. The generated tarball excludes the debian/ directory found in the upstream VCS. (It also excludes typical VCS directories: .git/, .hg/, .svn/, .CVS/.)

-p пакет, --package пакет
установить имя пакета Debian.
-u версия, --upstreamversion версия
установить версию пакета основной ветки.
-r редакция, --revision редакция
установить номер редации пакета Debian.
-z расширение, --targz расширение
set the tarball type, extension=(tar.gz|tar.bz2|tar.xz). (alias: z, b, x)
-b "binarypackage[:type],…​", --binaryspec "binarypackage[:type],…​"

set the binary package specs by a comma separated list of binarypackage:type pairs. Here, binarypackage is the binary package name, and the optional type is chosen from the following type values:

  • bin: C/C++ compiled ELF binary code package (any, foreign) (default, alias: "", i.e., null-string)
  • data: Data (fonts, graphics, …​) package (all, foreign) (alias: da)
  • dev: пакет с библиотекой разработки (any, same) (псевдоним: de)
  • doc: пакет документации (all, foreign) (псевдоним: do)
  • lib: пакет с библиотекой (any, same) (псевдоним: l)
  • perl: пакет со сценарием на языке Perl (all, foreign) (псевдоним: pl)
  • python3: Python (version 3) script package (all, foreign) (alias: py3, python, py)
  • ruby: пакет со сценарием на языке Ruby (all, foreign) (псевдоним: rb)
  • nodejs: Node.js based JavaScript package (all, foreign) (alias: js)
  • script: Shell and other interpreted language script package (all, foreign) (alias: sh)

The pair values in the parentheses, such as (any, foreign), are the Architecture and Multi-Arch stanza values set in the debian/control file. In many cases, the debmake command makes good guesses for type from binarypackage. If type is not obvious, type is set to bin.

Here are examples for typical binary package split scenarios where the upstream Debian source package name is foo:

  • Generating an executable binary package foo:

    • «-b’foo:bin'», or its short form `-b'-'`", or no -b option
  • Generating an executable (python3) binary package python3-foo:

    • «-b’python3-foo:py'», or its short form «-b’python3-foo'»
  • Generating a data package foo:

    • «-b’foo:data'», or its short form «-b'-:data'»
  • Generating a executable binary package foo and a documentation one foo-doc:

    • «-b’foo:bin,foo-doc:doc'», or its short form «-b'-:-doc'»
  • Generating a executable binary package foo, a library package libfoo1, and a library development package libfoo-dev:

    • «-b’foo:bin,libfoo1:lib,libfoo-dev:dev'» or its short form «-b'-,libfoo1,libfoo-dev'»

Если содержимое дерева исходного кода не совпадает с настройками поля тип, то команда debmake выводит предупреждение.

-e [email protected], --email [email protected]

установить адрес электронной почты.

По умолчанию берётся значение переменной окружения $DEBEMAIL.

-f "имя фамилия", --fullname "имя фамилия"

установить имя и фамилию.

По умолчанию берётся значение переменной окружения $DEBFULLNAME.

-i "инструментсборки", --invoke "инструментсборки"

invoke "buildtool" at the end of execution. buildtool may be «dpkg-buildpackage», «debuild», «sbuild», etc.

По умолчанию никакая программа не выполняется.

Передача этой опции автоматически приводит к передаче опции --local.

-j, --judge

запустить dpkg-depcheck для выявления сборочных зависимостей и определения путей файлов. Файлы журнала располагаются в родительском каталоге.

  • package.build-dep.log: файл журнала dpkg-depcheck.
  • package.install.log: файл журнала, в который записываются файлы из каталога debian/tmp.
-m, --monoarch
подготовить пакеты без поддержки мультиархитектурности.
-o файл, --option файл

read optional parameters from file. (This is not for everyday use.)

The content of file is sourced as the Python code at the end of para.py. For example, the package description can be specified by the following file.

para['desc'] = 'program short description'
para['desc_long'] = '''\
 program long description which you wish to include.
 .
 Empty line is space + .
 You keep going on ...
'''
-q, --quitearly
выйти до создания файлов в каталоге debian/.
-s, --spec
use upstream spec (pyproject.py for Python, etc.) for the package description.
-v, --version
показать информацию о версии.
-w "addon,…​", --with "addon,…​"

добавить дополнительные аргументы опции --with команды dh(1) в качестве дополнений в файл debian/rules.

The addon values are listed all separated by «,», e.g., «-w "python3,autoreconf"».

For Autotools based packages, autoreconf as addon to run «autoreconf -i -v -f» for every package building is default behavior of the dh(1) command.

For Autotools based packages, if they install Python (version 3) programs, setting python3 as addon to the debmake command argument is needed since this is non-obvious. But for pyproject.toml based Python packages, setting python3 as addon to the debmake command argument is not needed since this is obvious and the debmake command automatically set it to the dh(1) command.

-x n, --extra n

generate configuration files as templates. (Please note debian/changelog, debian/control, debian/copyright, and debian/rules are required configuration files to build a Debian binary package.)

The number n determines which configuration templates are generated.

  • -x0: all required configuration template files. (selected option if any of these required files already exist)
  • -x1: all -x0 files + desirable configuration template files with binary package type supports.
  • -x2: all -x1 files + normal configuration template files with maintainer script supports. (default)
  • -x3: all -x2 files + optional configuration template files.
  • -x4: all -x3 files + deprecated configuration template files.

Some configuration template files are generated with the extra .ex suffix to ease their removal. To activate these, rename their file names to the ones without the .ex suffix and edit their contents. Existing configuration files are never overwritten. If you wish to update some of the existing configuration files, please rename them before running the debmake command and manually merge the generated configuration files with the old renamed ones.

-y, --yes
«force yes» for all prompts. (without option: «ask [Y/n]»; doubled option: «force no»)
-T, --tutorial
output tutorial comment lines in template files. default when -x3 or -x4 is set.
-B, --backup
for existing template files, create new template files with .bkup suffix and keep the existing ones.

For a well behaving source, you can build a good-for-local-use installable single Debian binary package easily with one command. Test install of such a package generated in this way offers a good alternative to the traditional «make install» command installing into the /usr/local directory since the Debian package can be removed cleanly by the «dpkg -P '…​'» command. Here are some examples of how to build such test packages. (These should work in most cases. If the -d option does not work, try the -t option instead.)

For a typical C program source tree packaged with autoconf/automake:

  • debmake -d -i debuild

For a typical Python (version 3) module source tree:

  • debmake -s -d -b":python3" -i debuild

For a typical Python (version 3) module in the package-version.tar.gz archive:

  • debmake -s -a package-version.tar.gz -b":python3" -i debuild

Для обычного модуля языка Perl в виде архива пакет-версия.tar.gz:

  • debmake -a package-version.tar.gz -b":perl" -i debuild

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

  • Python (version 3) programs may require the pybuild-plugin-pyproject package.
  • The Autotools (autoconf + automake) build system may require autotools-dev or dh-autoreconf package.
  • Ruby programs may require the gem2deb package.
  • Node.js based JavaScript programs may require the pkg-js-tools package.
  • Java programs may require the javahelper package.
  • Для программ для окружения Gnome может потребоваться пакет gobject-introspection.
  • и т. д.

Although debmake is meant to provide template files for the package maintainer to work on, actual packaging activities are often performed without using debmake while referencing only existing similar packages and «Debian Policy Manual». All template files generated by debmake are required to be modified manually.

There are some points for debmake:

  • debmake helps to write terse packaging tutorial «Guide for Debian Maintainers» (debmake-doc package).
  • debmake provides short extracted license texts as debian/copyright in decent accuracy to help license review.
  • «Guide for Debian Maintainers» also serves as a tutorial with examples for the usage of debmake.
  • debmake internally calls licensecheck from the licensecheck package to create debian/copyright if it doesn’t exist.
  • debmake internally calls lrc from the licenserecon package to verify debian/copyright if it already exists.

There are some limitations for what characters may be used as a part of the Debian package. The most notable limitation is the prohibition of uppercase letters in the package name. Here is a summary as a set of regular expressions:

  • Upstream package name (-p): [-+.a-z0-9]{2,}
  • Binary package name (-b): [-+.a-z0-9]{2,}
  • Upstream version (-u): [0-9][-+.:~a-z0-9A-Z]*
  • Debian revision (-r): [0-9][+.~a-z0-9A-Z]*

See the exact definition in «Chapter 5 - Control files and their fields» in the «Debian Policy Manual».

debmake assumes relatively simple packaging cases. So all programs related to the interpreter are assumed to be «Architecture: all». This is not always true.

Сообщения об ошибках отправляйте с помощью команды reportbug для пакета debmake.

Набор символов в переменной окружении $DEBUG определяет уровень вывода журнала.

  • s: program progress logging
  • p: key para[..] value logging
  • P: all para[..] value logging
  • d: para["debs"] value logging

Use this feature as:

 $ DEBUG=spd debmake ...

See README.md in the source for more.

Copyright © 2014-2026 Osamu Aoki <[email protected]>

Лицензия Expat

The debmake-doc package provides the «Guide for Debian Maintainers» in plain text, HTML and PDF formats under the /usr/share/doc/debmake-doc/ directory.

See also licensecheck(1), lrc(1), dpkg-source(1), deb-control(5), debhelper(7), dh(1), dpkg-buildpackage(1), debuild(1), quilt(1), dpkg-depcheck(1), sbuild(1), gbp-buildpackage(1), and gbp-pq(1) manpages.