dh_make is a tool to convert a regular source code package into one
formatted according to the requirements of the Debian Policy. dh_make
must be invoked within a directory containing the source code, which
must be named <packagename>-<version>. The <packagename> must be all
lowercase, The <packagename> and <version> must be all lowercase, dig-
its and dashes. The <version> can also contain digits, and the symbols
plus, dot, tilde. The <version> must start with a digit. If the direc-
tory name does not conform to this scheme, you must rename it before
using dh_make. Alternatively, you may be able to use the --packagename
option to force the package name.
Classes can be set with the single direct options (such as --s for sin-
gle) or with the -C,--packageclass option (-C=s for single).
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-indepen-
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.
Unless --native was given, dh_make makes sure a original source
archive (<packagename>_<version>.orig.tar.gz) exists. The ar-
chive can either end with .gz or one of the other supported com-
pression 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 ../<packagename>-<ver-
sion>.orig.tar.gz 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 rea-
sons against it, this file should be the pristine upstream ar-
Then dh_make proceeds to generate a "debian" subdirectory and the nec-
essary control files in the program source directory. Those control
files are customized with the packagename and version extracted from
the directory name.
dh_make 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 and LDAP.
If the --templates or -o (--overlay) option is used dh_make 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, mit or custom.
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-insen-
sitive 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. If you
select custom here you will need to use the --copyrightfile
option as well.
When using the custom --copyright option this is the location of
your custom copyright file. dh_make will process this file just
like the standard copyright files. It is suggested you use one
of the existing license files as a starting point.
--docs Create a separate PACKAGE-doc binary package. All found docu-
ments in the source package will be installed here.
-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 revi-
sion 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
Automatically set the package class to Single binary, skipping
Automatically set the package class to arch-independent binary,
skipping the question.
-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 name_version which will set both the package name
and version and bypass and directory checking.
Skips applying the default templates to the target debian direc-
tory. Generally used in conjuction with either the --overlay or
Display the name, version, available options and authors, and
Show the program name and version, and exit successfully.
Automatic yes to prompts and run non-interactively. The package
class needs to be set for dh_make to run fully automatically.
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 entries.
EMAIL 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
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 Library class, and finally,
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:
dh_make --email email@example.com --copyright=bsd \
dh_make may not detect your username and email address correctly when
You may also want to read the Debian Policy (in
/usr/share/doc/debian-policy ) and the New Maintainers' Guide (in
Debian Project 2016-01-08 DH_MAKE(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.