is a tool to convert a regular source code package into one formatted
according to the requirements of the Debian Policy.
must be invoked within a directory containing the source code, which must
be named <packagename>-<version>. The <packagename> must be all lowercase,
digits and dashes. If the directory name does not conform to this scheme,
you must rename it before using
Alternatively, you may be able to use the --packagename option to force
the package name.
Single binary (s)
The package will generate a single binary .deb package. It is the standard
case, so if you don't know what to do, choose this.
The package will generate a single package that is arch-indpendent.
Multiple binary (m)
The package will generate multiple binary .deb packages from one source
package. Choose this for larger packages that need to be split.
The package will generate at least two binaries. One library package
containing just the lib in /usr/lib and another *-dev_*.deb package
containing documentation and C headers.
Kernel module (k)
The package will generate a binary-all kernel module -source package for
use with the
command. It also generates a binary package for
additional utilities, daemons, etc. that may come with the source.
The package will generate a package that can be used for kernel patches.
Unless --native was given,
makes sure a original source archive (<packagename>_<version>.orig.tar.gz)
exists. The archive can either end with .gz or one of the other supported
compression extensions such as bz2 or lzma.
If no such file exists, the file specified with -f is copied in place.
If no -f is supplied either but --createorig is, the current
directory is created into a news archive
The original archive is needed for other Debian tools to generate the
diffs to the original sources required by the Debian packaging format.
Unless there are reasons against it, this file should be the pristine
proceeds to generate a "debian" subdirectory and the necessary control
files in the program source directory. Those control files are customized
with the packagename and version extracted from the directory name.
makes several attempts to obtain the username. It first checks for the
environment variables $DEBFULLNAME, $LOGNAME is used to
find a name in the /etc/passwd file, and through NIS, YP
The e-mail address can either be specified with the -fB--email option
will attempt to find it. It will first check the environment variables
$DEBEMAIL and then $EMAIL. If they are not set then
will search an available LDAP directory using
using $LOGNAME as the uid to search under. Finally it will use
$LOGNAME and /etc/mailname to generate an email address.
will also generate example files that are also customized for the package
generated. You can remove all files with *.ex if you wish. You can also
delete the README.Debian file if you don't have anything to put in it.
Renaming the example files to their name without the .ex at the end (and
editing them if necessary) will activate that feature of debhelper.
If the --templates or -o (--overlay) option is used
will apply a customizing template to the "debian" directory. See the
templates described in the FILES section of this manpage for samples.
-c, --copyright license
Use license type in copyright file. license can be gpl, gpl2,
gpl3, lgpl, lgpl2 lgpl3, artistic, apache, bsd or x11.
If this field is not specified the copyright file has a space to
fill in which sort of license is used. The field is case-insensitive so
-c GPL works as well as -c gpl. gpl and lgpl will give you version 3
of the corresponding license, apache implies Apache v2.0. If you need a
different version, change the
license file afterwards or use the gpl2 and lgpl2 options.
-e, --email address
Use address as the e-mail address in the Maintainer: field of
Create a native Debian packages, i.e. do not generate a .orig archive,
since it will be generated when building with dpkg-buildpackage.
The version number will not have a Debian revision number (e.g. -1)
appended to it.
-f, --file file
Use file as the original source archive, and skip the copying of the
current program tree to program.orig.
Automatically set the package class to Library, skipping the question.
Automatically set the package class to Single binary, skipping the question.
Automatically set the package class to arch-independent binary, skipping the question.
Automatically set the package class to Multiple binary, skipping the question.
Automatically set the package class to Kernel module, skipping the question.
Automatically set package class to kpatch, skipping the question.
Adds missing example and control files on an existing debian source directory.
-t, --templates directory
Applies the customizing templates in directory to the debian directory.
-o, --overlay directory
Applies a customization template to an existing debian directory.
-p, --packagename name
Force the package name to be name, good for packages with hyphens in their
name or other strangeness. You can also make the parameter
which will set both the package name and version and bypass and directory
Skips applying the default templates to the target debian directory.
Display the name, version, available options and authors, and exit
-r, --rulesformat format
Set the format for the debian/rules file to format. The options are
the default Debhelper v7 minimal rules (dh7), the old rules format (old)
or CDBS format (cdbs).
Show the program name and version, and exit successfully.
The following environment settings are used by dh_make:
Email address to use in control and changelog entries.
You full name, eg "John Doe" which will appear in the control and changelog
Email address to use in control and changelog entries, only used if DEBEMAIL is no set.
Default username used for looking up email and full name in other directories.
Directory that contains all the template files, separated in six
with files for all package classes,
with files specific to the Single binary class,
with files specific to the Multiple binary class,
with files specific to the Library class, and finally,
with files specific to the native Debian packages.
template files for the more common licenses used in Debian packages
To get dh_make to use the defaults and ask you various questions
about the package
Create your single class package using the with the GPL license:
dh_make -s -c gpl
A more involved example where you set your name in the environment, contact email and license in the options and specify the upstream file: