These are tools to create basic Debian packages. For packaging projects in different languages, see Language-specific guides. For tools to create other parts of a system, see PackagingTools.

Language-agnostic tools

These generate Debian packages in any language. They often wrap language-specific package generators (see below).

Name

Comments

debdry

Removed in bullseye

debianize

Part of lintian-brush

debmake

Widely used

Language-specific tools

These use language-specific features (like documentation standards or software repositories) to choose better defaults.

Language

Any

Perl

Ruby

Python

Python

Node.js

Haskell

Go

ELPA (Emacs Lisp)

Tool (package name)

dh-make

dh-make-perl

gem2deb

python3-stdeb

pypi2deb

npm2deb 1

cabal-debian

dh-make-golang

dh-make-elpa

Upstream repository

N/A

CPAN.org, Alioth

Rubygems.org

PyPI

PyPI

npm

Hackage

varies

MELPA

Debian guide

list

guide

guide

guide

guide

guide

guide

guide

guide

Features

version

1.20150601

0.89-1

0.21.1

0.8.5-1

0.20160809

0.2.2-1

4.31-1

0.6.0-1

0.1.0 (experimental)

cdbs or dh?

dh

dh

dh

dh

dh

dh

cdbs

dh

dh

use DEBEMAIL

Build-Depends

2

3

partial4

3

partial5

Depends

2

3

4

3

at build time3

5

Homepage

short/long descriptions

short only

DEP8 tests

✅ (autopkgtest-pkg-perl in pkg-perl mode)

only template 6

basic (only require)

dh-golang autopkgtest

.docs / .examples / etc.

docs + examples

docs only

docs + examples

docs

docs only

debian/copyright

only template 6

only template 6

debian/watch

only template 6

yes

git repo creation, pristine-tar, etc.

debian/upstream/metadata

ITP mail template

❌(use dpt gen-itp)

recursive

no 7

Notes

Usage

See also

Meetings


CategoryPackaging CategorySoftware

  1. just generates files from metadata, doesn't download the upstream source or create a proper source package (1)

  2. uses local packages and apt-file to identify packages (2 3)

  3. just converts upstream package names found in metadata to Debian package names (4 5 6 7 8)

  4. uses apt-file with a fallback on module name conversion (code) (9 10)

  5. relies on dh-elpa's dependency detection (11 12)

  6. provides a file that is not customized per-package (13 14 15 16)

  7. The estimate command can tell which parts of the dependency chains are missing from Debian (17)