1.3. Helpers for debian/rules
Package building tools make the process of writing debian/rules
files easier. See Helper scripts for more information about why these might or might not be desired.
1.3.1. debhelper
debhelper
is a collection of programs that can be used in debian/rules
to automate common tasks related to building binary Debian packages. debhelper
includes programs to install various files into your package, compress files, fix file permissions, and integrate your package with the Debian menu system.
Unlike some approaches, debhelper
is broken into several small, simple commands, which act in a consistent manner. As such, it allows more fine-grained control than some of the other debian/rules tools.
There are a number of little debhelper
add-on packages, too transient to document. You can see the list of most of them by doing apt-cache search ^dh-
.
When choosing a debhelper
compatibility level for your package, you should choose the highest compatibility level that is supported in the most recent stable release. Only use a higher compatibility level if you need specific features that are provided by that compatibility level that are not available in earlier levels.
In the past the compatibility level was defined in debian/compat
, however nowadays it is much better to not use that but rather to use a versioned build-dependency like debhelper-compat (=12)
.
1.3.2. dh-make
The dh-make
package contains dh_make
, a program that creates a skeleton of files necessary to build a Debian package out of a source tree. As the name suggests, dh_make
is a rewrite of debmake
, and its template files use dh_*
programs from debhelper
.
While the rules files generated by dh_make
are in general a sufficient basis for a working package, they are still just the groundwork: the burden still lies on the maintainer to finely tune the generated files and make the package entirely functional and Policy-compliant.
1.3.3. equivs
equivs
is another package for making packages. It is often suggested for local use if you need to make a package simply to fulfill dependencies. It is also sometimes used when making meta-packages, which are packages whose only purpose is to depend on other packages.