Приложение A. Страница руководства debmake(1)

debmake - program to make a Debian source package

debmake [-h] [-c | -k] [-n | -a версия-пакета.orig.tar.gz | -d | -t ] [-p пакет] [-u версия] [-r редакция] [-z расширение] [-b "двоичныйпакет, …]" [-e foo@example.org] [-f "имя фамилия"] [-i "инструментсборки" | -j] [-l файл_лицензии] [-m] [-o файл] [-q] [-s] [-v] [-w "дополнение, …"] [-x [01234]] [-y] [-L] [-P] [-T]

debmake helps to build a Debian package from the upstream source. Normally, this is done as follows:

  • Загружается tar-архив основной ветки разработки в виде файла пакет-версия.tar.gz.
  • It is untarred to create many files under the package-version/ directory.
  • debmake is invoked in the package-version/ directory, possibly without any arguments.
  • Файлы в каталоге package-version/debian/ настраиваются вручную.
  • Вызывается dpkg-buildpackage (обычно из обёрточной утилиты debuild или pdebuild) в каталоге пакет-версия/ с целью создания пакетов Debian.

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

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

сканировать исходный код на предмет текста об авторском праве и лицензировании и выйти.

  • -c: простой стиль вывода
  • -cc: обычный стиль вывода (схож с файлом debian/copyright)
  • -ccc: отладочный стиль вывода
-k, --kludge

сравнить файл debian/copyright с исходным кодом и выйти.

Файл debian/copyright должен быть организован таким образом, что наиболее общие файловые шаблоны размещаются раньше конкретных исключений.

  • -k: простой стиль вывода
  • -kk: подробный стиль вывода
-n, --native

make a native Debian source package without .orig.tar.gz. This makes a “3.0 (native)” format 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 “3.0 (quilt)” format non-native Debian package. 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 они будут преобразованы в буквы нижнего регистра.

Если в качестве аргумента указан URL (http://, https:// или ftp://) tar-архива основной ветки, то этот архив скачивается с помощью wget или curl.

-d, --dist

сначала запустить эквиваленты команды «make dist» для создания tar-архива основной ветки, затем использовать его.

Команда «debmake -d» предназначена для запуска в каталоге пакет/, в котором расположена система управления версиями и система сборки, поддерживающая эквиваленты команды «make dist». (automake/autoconf, Python distutils, …)

-t, --tar

запустить команду «tar» для создания tar-архива основной ветки, затем использовать его.

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 "двоичныйпакет[:тип],…", --binaryspec "двоичныйпакет[:тип],…"

set the binary package specs by a comma separated list of binarypackage:type pairs, e.g., in the full form “foo:bin,foo-doc:doc,libfoo1:lib,libfoo1-dbg:dbg,libfoo-dev:dev” or in the short form, “-doc,libfoo1,libfoo1-dbg, libfoo-dev”.

Here, binarypackage is the binary package name, and the optional type is chosen from the following type values:

  • bin: скомпилированный двоичный пакет с исполняемыми файлами формата ELF на языке C/C++ (any, foreign) (по умолчанию, псевдоним: "", то есть пустая-строка)
  • data: пакет с данными (шрифты, графика, …) (all, foreign) (псевдоним: da)
  • dbg: Debug symbol package (any, same) (alias: db) (deprecated for stretch and after since the -dbgsym package is automatically generated)
  • dev: пакет с библиотекой разработки (any, same) (псевдоним: de)
  • doc: пакет документации (all, foreign) (псевдоним: do)
  • lib: пакет с библиотекой (any, same) (псевдоним: l)
  • perl: пакет со сценарием на языке Perl (all, foreign) (псевдоним: pl)
  • python: пакет со сценарием на языке Python (all, foreign) (псевдоним: py)
  • python3: пакет со сценарием на языке Python3 (all, foreign) (псевдоним: py3)
  • ruby: пакет со сценарием на языке Ruby (all, foreign) (псевдоним: rb)
  • script: пакет со сценарием командной оболочки (all, foreign) (псевдоним: sh)

Пары значений в скобках, такие как (any, foreign), представляют собой значения служебных строк Architecture и Multi-Arch, устанавливаемые в файле debian/control.

Во многих случаях команда debmake довольно хорошо предсказывает значение поля тип, исходя из значения поля двоичныйпакет. Если тип не очевиден, то значением поля тип становится bin. Например, исходя из libfoo значением поля тип становится lib, а исходя из font-bar значением поля тип становится data, …

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

-e foo@example.org, --email foo@example.org

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

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

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

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

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

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

invoke "buildtool" at the end of execution. buildtool may be “dpkg-buildpackage”, “debuild”, “pdebuild”, “pdebuild --pbuilder cowbuilder”, etc.

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

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

-j, --judge

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

  • package.build-dep.log: файл журнала dpkg-depcheck.
  • package.install.log: файл журнала, в который записываются файлы из каталога debian/tmp.
-l "файл_лицензии,…", --license "файл_лицензии,…"

add formatted license text to the end of the debian/copyright file holding license scan results.

The default is to add COPYING and LICENSE, and license_file needs to list only the additional file names all separated by “,”.

-m, --monoarch
подготовить пакеты без поддержки мультиархитектурности.
-o файл, --option файл

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

The content of file is sourced as the Python3 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
использовать spec-файло основной ветки (в случае исходного кода на языке Python используется setup.py и т. д.) в качестве источника описания пакета.
-v, --version
показать информацию о версии.
-w "дополнение,…", --with "дополнение,…"

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

Значения дополнений указываются с разделением с помощью «,», напр., «-w "python2,autoreconf"».

For Autotools based packages, setting autoreconf as addon forces running “autoreconf -i -v -f” for every package building. Otherwise, autotools-dev as addon is used as the default.

For Autotools based packages, if they install Python programs, python2 as addon is needed for packages with “compat < 9” since this is non-obvious. But for setup.py based packages, python2 as addon is not needed since this is obvious and it is automatically set for the dh(1) command by the debmake command when it is required.

-x n, --extra n

создать дополнительные файлы настройки в виде шаблонов.

The number n determines which configuration templates are generated.

  • -x0: минимум файлов настройки. (по умолчанию, если эти файлы уже существуют)
  • -x1: all -x0 files + desirable configuration files. (default for new packages)
  • -x2: all -x1 files + interesting configuration files. (recommended for experts, multi binary aware)
  • -x3: all -x2 files + unusual configuration template files with the extra .ex suffix to ease their removal. (recommended for new users) To use these as configuration files, rename their file names to ones without the .ex suffix.
  • -x4: all -x3 files + copyright file examples.
-y, --yes
«отвечать утвердительно» на все вопросы. (без опции: «спрашивать [Y/n]»; двочная опция: «отвечать отрицательно»)
-L, --local
создать файлы настройки для локального пакета, чтобы перехитрить проверки lintian(1).
-P, --pedantic
педантично проверять автоматически создаваемые файлы.
-T, --tutorial
вывести в шаблонных файлах строки с обучающими комментариями.

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.)

Для дерева исходного кода обычной программы на языке C с autoconf/automake:

  • debmake -d -i debuild

For a typical Python module source tree:

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

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

  • debmake -s -a пакет-версия.tar.gz -b":python" -i debuild

For a typical Perl module in the Package-version.tar.gz archive:

  • debmake -a Пакет-версия.tar.gz -b":perl" -i debuild

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

  • Python3 programs may require the dh-python package.
  • The Autotools (Autoconf + Automake) build system may require autotools-dev or dh-autoreconf package.
  • Ruby programs may require the gem2deb package.
  • Java programs may require the javahelper package.
  • Для программ для окружения Gnome может потребоваться пакет gobject-introspection.
  • и т. д.

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

The license extraction and assignment process involves a lot of heuristics; it may fail in some cases. It is highly recommended to use other tools such as licensecheck from the devscripts package in conjunction with debmake.

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:

  • Имя пакета основной ветки разработки (-p): [-+.a-z0-9]{2,}
  • Имя двоичного пакета (-b): [-+.a-z0-9]{2,}
  • Версия основной ветки разработки (-u): [0-9][-+.:~a-z0-9A-Z]*
  • Редакция Debian (-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 предполагает относительно простые случаи создания пакетов. Поэтому все программы, относящиеся е интерпретатору, считаются «Architecture: all». Тем не менее, это не всегда так.

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

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

  • i: печать информации
  • p: вывод всех глобальных параметров
  • d: вывод всех грамматически разобранных параметров для всех двоичных пакетов
  • f: ввод имени файла для сканирования copyright
  • y: разделение год/имя для строки об авторском праве
  • s: сканер строки для format_state
  • b: цикл сканирования content_state: начало-конец
  • m: цикл сканирования content_state: после совпадения с регулярным выражением
  • e: цикл сканирования content_state: конец-цикл
  • c: печать текста из раздела об авторских правах
  • l: печать текста из раздела о лицензиях
  • a: печать текста из раздела автор/переводчик
  • k: сортировать ключи для строк debian/copyright
  • n: сканировать результат debian/copyright («debmake -k»)

Используйте эту переменную следующим образом:

 $ DEBUG=pdfbmeclak debmake ...

Дополнительную информацию см. в файле README.developer.

Copyright © 2014-2017 Osamu Aoki <osamu@debian.org>

Лицензия 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.

Кроме того, ознакомьтесь с Руководством нового сопровождающего Debian, предоставляемым пакетом maint-guide.

Также см. страницы руководства dpkg-source(1), deb-control(5), debhelper(7), dh(1), dpkg-buildpackage(1), debuild(1), quilt(1), dpkg-depcheck(1), pdebuild(1), pbuilder(8), cowbuilder(8), gbp-buildpackage(1), gbp-pq(1) и git-pbuilder(1).