debmake [-h] [-c | -k] [-n | -a package-version.orig.tar.gz | -d | -t ] [-p package] [-u version] [-r revision] [-z extension] [-b "binarypackage, …]" [-e foo@example.org] [-f "firstname lastname"] [-i "buildtool" | -j] [-l license_file] [-m] [-o file] [-q] [-s] [-v] [-w "addon, …"] [-x [01234]] [-y] [-L] [-P] [-T]
debmake 协助从上游源代码构建一个 Debian 软件包,通常做法如下:
请确保将 -b、-f、-l 和 -w 选项的参数使用引号合适地保护起来,以避免 shell 环境的干扰。
scan source for copyright+license text and exit.
compare the debian/copyright file with the source and exit.
The debian/copyright file must be organized to list the generic file patterns before the specific exceptions.
制作一个本土 Debian 源码包,即不涉及 .orig.tar.gz。这样将制作一个“3.0 (native)”格式的包。
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.
use the upstream source tarball directly. (-p, -u, -z: overridden)
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.
If the specified upstream tarball name contains uppercase letters, the Debian package name is generated by converting them to lowercase letters.
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.
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, Python distutils, …)
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/.)
设置二进制软件包的指定类型内容,使用一个用逗号分隔的二进制软件包名:类型成对列表;例如,使用完整形式“foo:bin,foo-doc:doc,libfoo1:lib,libfoo-dev:dev”或者使用短形式,“-doc,libfoo1,libfoo-dev”。
这里,二进制软件包是二进制软件包名称,可选的类型应当从下面的类型值中进行选取:
括号内成对的值,例如(any,foreign),是软件包的架构和多架构(Multi-Arch)特性的值,它们将设置在 debian/control 文件中。
大多数情况下,debmake 命令可以有效地从二进制软件包的名称猜测出正确的类型。如果类型的值并不明显,程序将回退到将类型设置为bin。例如,libfoo 设置类型为 lib,而 font-bar 会令程序设置类型为 data,……
如果源码树的内容和类型的设置不一致,debmake 命令会发出警告。
设置电子邮件地址。
The default is taken from the value of the environment variable $DEBEMAIL.
set the fullname.
The default is taken from the value of the environment variable $DEBFULLNAME.
invoke "buildtool" at the end of execution. buildtool may be “dpkg-buildpackage”, “debuild”, “pdebuild”, “pdebuild --pbuilder cowbuilder”, etc.
The default is not to execute any program.
Setting this option automatically sets the --local option.
run dpkg-depcheck to judge build dependencies and identify file paths. Log files are in the parent directory.
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 “,”.
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 ... '''
add extra arguments to the --with option of the dh(1) command as addon in debian/rules.
The addon values are listed all separated by “,”, e.g., “-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.
generate configuration files as templates. (Please note debian/changelog, debian/control, debian/copyright, and debian/rules are bare minimum configuration files to build a Debian binary package.)
The number n determines which configuration templates are generated.
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:
For a typical Python module source tree:
对于 package-version.tar.gz 存档里的一个典型 Python 模块:
For a typical Perl module in the package-version.tar.gz archive:
Packaging may require installation of some additional specialty helper packages.
debmake 的目的是为软件包维护者提供开始工作的模板文件。注释行以 # 开始,其中包含一些教程性文字。您在将软件包上传至 Debian 仓库之前必须删除或者修改这样的注释行。
许可证信息的提取和赋值过程应用了大量启发式操作,因此在某些情况下可能不会正常工作。强烈建议您搭配使用其它工具,例如来自 devscripts 软件包的 licensecheck 工具,以配合 debmake 的使用。
组成 Debian 软件包名称的字符选取存在一定的限制。最明显的限制应当是软件包名称中禁止出现大写字母。这里给出正则表达式形式的规则总结:
请在“Debian 政策手册”的 第 5 章 - Control 文件及其字段 一节中查看其精确定义。
debmake 所假设的打包情景是相对简单的。因此,所有与解释器相关的程序都会默认为“Architecture: all”的情况。当然,这个假设并非总是成立。
Please report bugs to the debmake package using the reportbug command.
The character set in the environment variable $DEBUG determines the logging output level.
Use this as:
$ DEBUG=pdfbmeclak debmake ...
查看源码中的 README.developer 文件以了解更多信息。
版权所有 © 2014-2017 Osamu Aoki <osamu@debian.org>
debmake-doc 软件包提供了“Debian 维护者指南”手册,以纯文本、HTML 和 PDF 三种格式存放在 /usr/share/doc/debmake-doc/ 目录下。
另见 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) 的手册页。