devscripts - scripts to ease the lives of Debian developers
The
devscripts package provides a collection of scripts which may be of
use to Debian developers and others wishing to build Debian packages. For a
summary of the available scripts, please see the file
/usr/share/doc/devscripts/README.gz, and for full details, please see
the individual manpages. They are contributed by multiple developers; for
details of the authors, please see the code or manpages.
Also, the directory
/usr/share/doc/devscripts/examples contains an
example
exim script for sorting mail arriving to Debian mailing lists.
Several scripts of the devscripts suite use the following environment variables.
Check the man pages of individual scripts for more details on how the
variables are used.
- DEBEMAIL
- Email of the person acting on a given Debian package via
devscripts.
- DEBFULLNAME
- Full name (first + family) of the person acting on a given
Debian package via devscripts.
Here is the complete list of available devscripts. See their man pages for
additional documentation.
-
annotate-output(1)
- run a command and prepend time and stream (O for stdout, E
for stderr) for every line of output.
-
archpath(1)
- Prints arch (tla/Bazaar 1.x) package names. Also supports
calculating the package names for other branches. [tla]
-
bts(1)
- A command-line tool for accessing the Debian Bug Tracking
System, both to send mails to [email protected] and to access the web
pages and SOAP interface of the BTS. [www-browser, libauthen-sasl-perl,
libsoap-lite-perl, liburi-perl, libwww-perl, bsd-mailx | mailx]
-
build-rdeps(1)
- Searches for all packages that build-depend on a given
package. [dctrl-tools, dose-extra, libdpkg-perl]
-
chdist(1)
- tool to easily play with several distributions.
[dctrl-tools]
-
checkbashisms(1)
- check whether a /bin/sh script contains any common
bash-specific constructs.
-
cowpoke(1)
- upload a Debian source package to a cowbuilder host and
build it, optionally also signing and uploading the result to an incoming
queue. [ssh-client]
-
cvs-debi, cvs-debc(1)
- wrappers around debi and debc respectively (see below)
which allow them to be called from the CVS working directory.
[cvs-buildpackage]
-
cvs-debrelease(1)
- wrapper around debrelease which allows it to be called from
the CVS working directory. [cvs-buildpackage, dupload | dput,
ssh-client]
-
cvs-debuild(1)
- A wrapper for cvs-buildpackage to use debuild as its
package building program. [cvs-buildpackage, fakeroot, lintian, gnupg
|gnupg2]
-
dcmd(1)
- run a given command replacing the name of a .changes or
.dsc file with each of the files referenced therein. *
-
dd-list(1)
- given a list of packages, pretty-print it ordered by
maintainer. *
-
debbisect(1)
- bisect snapshot.debian.org to find which change in the
archive introduced a certain problem. [mmdebstrap, python3-debian]
-
debc(1)
- List contents of current package. Do this after a
successful "debuild" to see if the package looks all right.
-
debchange (abbreviation dch)(1)
- Modifies debian/changelog and manages version numbers for
you. It will either increment the version number or add an entry for the
current version, depending upon the options given to it.
[libdistro-info-perl, libsoap-lite-perl]*
-
debcheckout(1)
- checkout the development repository of a Debian package.
*
-
debclean(1)
- Clean a Debian source tree. Debclean will clean all Debian
source trees below the current directory, and if requested, also remove
all files that were generated from these source trees (that is .deb, .dsc
and .changes files). It will keep the .diffs and original files, though,
so that the binaries and other files can be rebuilt if necessary.
[fakeroot]*
-
debcommit(1)
- Commits changes to cvs, darcs, svn, svk, tla, bzr, git, or
hg, using new entries in debian/changelog as the commit message. Also
supports tagging Debian package releases. [cvs | darcs | subversion | svk
| tla | bzr | git-core | mercurial, libtimedate-perl]
-
debdiff(1)
- A program which examines two .deb files or two .changes
files and reports on any difference found in their file lists. Useful for
ensuring that no files were inadvertently lost between versions. Can also
examine two .dsc files and report on the changes between source versions.
For a deeper comparison one can use the diffoscope package. [wdiff,
patchutils]*
-
debdiff-apply(1)
- Apply unified diffs of two Debian source packages, such as
those generated by debdiff, to a target Debian source package. Any changes
to debian/changelog are dealt with specially, to avoid the conflicts that
changelog diffs typically produce when applied naively. May be used to
check that old patches still apply to newer versions of those packages.
[python3-debian, python3-unidiff, quilt]
-
debi(1)
- Installs the current package by using the setuid root
debpkg script described below. It assumes that the current package has
just been built (for example by debuild), and the .deb lives in the parent
directory, and will effectively run dpkg -i on the .deb. The ability to
install the package with a very short command is very useful when
troubleshooting packages.
-
debootsnap(1)
- Combines debootstrap and snapshot.debian.org to create a
chroot containing exactly the requested selection of packages. This can be
used to re-create a chroot from the past, for example to reproduce a bug.
The tool is also used by debrebuild to build a package in a chroot with
build dependencies in the same version as recorded in the buildinfo file.
[apt-utils, dpkg-dev, equivs, mmdebstrap, python3-pycurl]
-
debpkg(1)
- A wrapper for dpkg used by debi to allow convenient testing
of packages. For debpkg to work, it needs to be made setuid root, and this
needs to be performed by the sysadmin -- it is not installed as setuid
root by default. (Note that being able to run a setuid root debpkg is
effectively the same as having root access to the system, so this should
be done with caution.) Having debpkg as a wrapper for dpkg can be a Good
Thing (TM), as it decreases the potential for damage by accidental wrong
use of commands in superuser mode (e.g., an inadvertent rm -rf * in the
wrong directory is disastrous as many can attest to).
-
debrelease(1)
- A wrapper around dupload or dput which figures out which
version to upload, and then calls dupload or dput to actually perform the
upload. [dupload | dput, ssh-client]
-
debrebuild(1)
- A script that provided a .buildinfo file reports the
instructions on how to try to reproduce the reported build. [sbuild |
mmdebstrap, python3-pycurl, libdpkg-perl]
-
debrepro(1)
- A script that tests reproducibility of Debian packages. It
will build a given source directory twice, with a set of variation between
the first and second build, and compare the binary packages produced. If
diffoscope is installed, it is used to compare non-matching binaries. If
disorderfs is installed, it is used during the build to inject
non-determinism in filesystem listing operations. [faketime, diffoscope,
disorderfs]
-
debrsign(1)
- This transfers a .changes/.dsc pair to a remote machine for
signing, and runs debsign on the remote machine over an SSH connection.
[gnupg | gnupg2, debian-keyring, ssh-client]
-
debsign(1)
- Use GNU Privacy Guard to sign the changes (and possibly
dsc) files created by running dpkg-buildpackage with no-sign options.
Useful if you are building a package on a remote machine and wish to sign
it on a local one. This script is capable of automatically downloading the
.changes and .dsc files from a remote machine. [gnupg |gnupg2,
debian-keyring, ssh-client]*
-
debsnap(1)
- grab packages from https://snapshot.debian.org
[libwww-perl, libjson-perl]
-
debuild(1)
- A wrapper for building a package (i.e., dpkg-buildpackage)
to avoid problems with insufficient permissions and wrong paths etc.
Debuild will set up the proper environment for building a package. Debuild
will use the fakeroot program to build the package by default, but can be
instructed to use any other gain-root command, or can even be installed
setuid root. Debuild can also be used to run various of the debian/rules
operations with the same root-gaining procedure. Debuild will also run
lintian to check that the package does not have any major policy
violations. [fakeroot, lintian, gnupg | gnupg2]*
-
deb-janitor(1)
- command-line client for interacting with the Debian
Janitor.
-
deb-reversion(1)
- increases a binary package version number and repacks the
package, useful for porters and the like.
-
deb-why-removed(1)
- shows the reason a package was removed from the archive.
[libdpkg-perl]
-
dep3changelog(1)
- generate a changelog entry from a DEP3-style patch
header.
-
desktop2menu(1)
- given a freedesktop.org desktop file, generate a skeleton
for a menu file. [libfile-desktopentry-perl]
-
dget(1)
- Downloads Debian source and binary packages. Point at a
.changes or .dsc to download all references files. Specify a package name
to download it from the configured apt repository. [wget | curl]
-
diff2patches(1)
- extracts patches from a .diff.gz file placing them under
debian/ or, if present, debian/patches. [patchutils]
-
dpkg-depcheck, dpkg-genbuilddeps(1)
- Runs a specified command (such as debian/rules build) or
dpkg-buildpackage, respectively, to determine the packages used during the
build process. This information can be helpful when trying to determine
the packages needed in the Build-Depends etc. lines in the debian/control
file. [build-essential, strace]
-
dscextract(1)
- extract a single file from a Debian source package.
[patchutils]
-
dscverify(1)
- check the signature and MD5 sums of a dsc file against the
most current Debian keyring on your system. [gnupg | gnupg2,
debian-keyring]
-
edit-patch(1)
- add/edit a patch for a source package and commit the
changes. [quilt | dpatch | cdbs]
-
getbuildlog(1)
- download package build logs from Debian auto-builders.
[wget]
-
git-deborig(1)
- try to produce Debian orig.tar using git-archive(1).
[libdpkg-perl, libgit-wrapper-perl, liblist-compare-perl,
libstring-shellquote-perl, libtry-tiny-perl]
-
grep-excuses(1)
- grep britney's excuses to find out what is happening to
your packages. [libdbd-pg-perl, libterm-size-perl, libyaml-syck-perl,
wget, w3m]
-
hardening-check(1)
- report the hardening characteristics of a set of
binaries.
-
list-unreleased(1)
- searches for packages marked UNRELEASED in their
changelog.
-
ltnu (Long Time No Upload)(1)
- List all uploads of packages by the given uploader or
maintainer and display them ordered by the last upload of that package,
oldest uploads first.
-
manpage-alert(1)
- locate binaries without corresponding manpages.
[man-db]
-
mass-bug(1)
- mass-file bug reports. [bsd-mailx | mailx]
-
mergechanges(1)
- merge .changes files from the same release but built on
different architectures.
-
mk-build-deps(1)
- Given a package name and/or control file, generate a binary
package which may be installed to satisfy the build-dependencies of the
given package. [equivs]
-
mk-origtargz(1)
- Rename upstream tarball, optionally changing the
compression and removing unwanted files. [libfile-which-perl, unzip,
xz-utils, file]
-
namecheck(1)
- Check project names are not already taken.
-
nmudiff(1)
- prepare a diff of this version (presumably an NMU against
the previously released version (as per the changelog) and submit the diff
to the BTS. [patchutils, mutt]
-
origtargz(1)
- fetch the orig tarball of a Debian package from various
sources, and unpack it. [pristine-tar, pristine-lfs]
-
plotchangelog(1)
- display information from a changelog graphically using
gnuplot. [libtimedate-perl, gnuplot]
-
pts-subscribe(1)
- subscribe to the PTS (Package Tracking System) for a
limited period of time. [bsd-mailx | mailx, at]
-
rc-alert(1)
- list installed packages which have release-critical bugs.
[wget | curl]
-
reproducible-check(1)
- reports on the reproducible status of installed packages.
For more details please see <https://reproducible-builds.org>.
-
rmadison(1)
- remotely query the Debian archive database about packages.
[liburi-perl, wget | curl]
-
sadt(1)
- run DEP-8 tests. [python3-debian, autodep8]
-
salsa(1)
- manipulates salsa.debian.org repositories and users
[libgitlab-api-v4-perl]
-
suspicious-source(1)
- output a list of files which are not common source files.
[python3-magic]
-
svnpath(1)
- Prints the path to the Subversion repository of a
Subversion checkout. Also supports calculating the paths for branches and
tags in a repository independent fashion. Used by debcommit to generate
svn tags. [subversion]
-
tagpending(1)
- runs from a Debian source tree and tags bugs that are to be
closed in the latest changelog as pending. [libsoap-lite-perl]
-
transition-check(1)
- Check a list of source packages for involvement in
transitions for which uploads to unstable are currently blocked.
[libwww-perl, libyaml-syck-perl]
-
uscan(1)
- Automatically scan for and download upstream updates. Uscan
can also call a program such as uupdate to attempt to update the
Debianised version based on the new update. Whilst uscan could be used to
release the updated version automatically, it is probably better not to
without testing it first. Uscan can also verify detached OpenPGP
signatures if upstream's signing key is known. [file, gpgv | gpgv2, gnupg
| gnupg2, libfile-dirlist-perl, libfile-touch-perl, libfile-which-perl,
liblwp-protocol-https-perl, libmoo-perl, libwww-perl, unzip,
xz-utils]*
-
uupdate(1)
- Update the package with an archive or patches from an
upstream author. This will be of help if you have to update your package.
It will try to apply the latest diffs to your package and tell you how
successful it was. [patch]
-
what-patch(1)
- determine what patch system, if any, a source package is
using. [patchutils]
-
whodepends(1)
- check which maintainers' packages depend on a package.
-
who-permits-upload(1)
- Retrieve information about Debian Maintainer access control
lists. [gnupg | gnupg2, libencode-locale-perl, libwww-perl,
debian-keyring]
-
who-uploads(1)
- determine the most recent uploaders of a package to the
Debian archive. [gnupg | gnupg2, debian-keyring, debian-maintainers,
wget]
-
wnpp-alert(1)
- list installed packages which are orphaned or up for
adoption. [wget | curl]
-
wnpp-check(1)
- check whether there is an open request for packaging or
intention to package bug for a package. [wget | curl]
-
wrap-and-sort(1)
- wrap long lines and sort items in packaging files.
[python3-debian]