DEVSCRIPTS(7)
okay bestie, welcome to DEVSCRIPTS(7) β the manual page straight outta the Miscellaneous Information Manual, all about the devscripts package π
β¨ NAME β¨
devscripts β scripts to ease the lives of Debian developers π«Ά
π DESCRIPTION π
The devscripts package is literally a whole collection of scripts that 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. no cap.
Also, the directory /usr/share/doc/devscripts/examples contains an example exim script for sorting mail arriving to Debian mailing lists. iconic.
πΏ ENVIRONMENT πΏ
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 viadevscripts.DEBFULLNAMEβ Full name (first + family) of the person acting on a given Debian package viadevscripts.
π SCRIPTS π
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 (Ofor stdout,Efor 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)β Comprehensive CLI for the Debian Bug Tracking System (BTS). Supports 1) reading and finding bugs in CLI email clients (MUAs) or a web-browser, 2) changing bugs non-interactively, 3) submitting and replying to bugs efficiently from your shell or MUA and finally 4) fetching bug information directly from the BTS SOAP interface.[www-browser, libauthen-sasl-perl, libsoap-lite-perl, liburi-perl, libwww-perl, default-mta | mail-transport-agent]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/shscript 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]dcmd(1)β run a given command replacing the name of a.changesor.dscfile 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.[debvm, mmdebstrap, python3-debian]debc(1)β List contents of current package. Do this after a successfuldebuildto see if the package looks all right.debchange (abbreviation dch)(1)β Modifiesdebian/changelogand 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,.dscand.changesfiles). It will keep the.diffsand original files, though, so that the binaries and other files can be rebuilt if necessary.*debcommit(1)β Commits changes tocvs,darcs,svn,svk,tla,bzr,git, orhg, using new entries indebian/changelogas 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.debfiles or two.changesfiles 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.dscfiles and report on the changes between source versions. For a deeper comparison one can use thediffoscopepackage.[wdiff, patchutils]*debdiff-apply(1)β Apply unified diffs of two Debian source packages, such as those generated bydebdiff, to a target Debian source package. Any changes todebian/changelogare 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]debftbfs(1)β list source packages which have FTBFS bugs filed against them and print them with the bug number and title.[postgresql-client, python3-debian, python3-debianbts]debi(1)β Installs the current package by usingdpkg. It assumes that the current package has just been built (for example bydebuild), and the.deblives in the parent directory, and will effectively rundpkg -ion the.deb. The ability to install the package with a very short command is very useful when troubleshooting packages.debootsnap(1)β Combinesdebootstrapand 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 bydebrebuildto build a package in a chroot with build dependencies in the same version as recorded in the buildinfo file.[apt-utils, equivs, mmdebstrap, python3-debian, python3-pycurl, python3-requests]debrelease(1)β A wrapper aroundduploadordputwhich figures out which version to upload, and then callsduploadordputto actually perform the upload.[dupload | dput, ssh-client]debrebuild(1)β Given a buildinfo file, builds the referenced source package in an environment documented in the provided buildinfo file. The build can be performed bysbuildor other builders in a chroot environment created bydebootsnap. The generated artifacts will be verified against the hashes from the buildinfo file.[sbuild | mmdebstrap, python3-pycurl, libdpkg-perl, libstring-shellquote-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. Ifdiffoscopeis installed, it is used to compare non-matching binaries. Ifdisorderfsis installed, it is used during the build to inject non-determinism in filesystem listing operations.[faketime, diffoscope, disorderfs]debrsign(1)β This transfers a.changes/.dscpair to a remote machine for signing, and runsdebsignon the remote machine over an SSH connection.[gnupg, debian-keyring, ssh-client]debsign(1)β Use GNU Privacy Guard to sign the changes (and possibly dsc) files created by runningdpkg-buildpackagewith 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.changesand.dscfiles from a remote machine.[gnupg, debian-keyring, ssh-client]*debsnap(1)β grab packages fromhttps://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 also runlintianto check that the package does not have any major policy violations.[lintian, gnupg]*deb-check-file-conflicts(1)β Check (usingapt-file) if a Debian package installs files in the exact same path as any other package, and if there are Breaks/Replaces (or Conflicts) defined indebian/controlto avoid the package installation failing on file conflicts.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]deb2apptainer(1)β build a Singularity/Apptainer image with given Debian packages.deb2docker(1)β build a docker image with given Debian packages.[docker.io]dep3changelog(1)β generate a changelog entry from a DEP3-style patch header.dep-14-convert-git-branch-names(1)β Convert git branches to follow DEP-14.dget(1)β Downloads Debian source and binary packages. Point at a.changesor.dscto 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.gzfile placing them underdebian/or, if present,debian/patches.[patchutils]dpkg-depcheck, dpkg-genbuilddeps(1)β Runs a specified command (such asdebian/rules build) ordpkg-buildpackage, respectively, to determine the packages used during the build process. This information can be helpful when trying to determine the packages needed in theBuild-Dependsetc. lines in thedebian/controlfile.[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, debian-keyring, debian-tag2upload-keyring]edit-patch(1)β add/edit a patch for a source package and commit the changes.[quilt]getbuildlog(1)β download package build logs from Debian auto-builders.[wget | curl]grep-excuses(1)β grep britney's excuses to find out what is happening to your packages.[libdbd-pg-perl, libterm-size-perl, libyaml-libyaml-perl, wget, w3m]hardening-check(1) β ok so this one β¨ reports the hardening characteristics of a set of binaries. It looks at your binaries and tells you what security build flags actually made it in there. Vibes: security audit but make it quick. πlist-unreleased(1) β searches for packages markedUNRELEASEDin their changelog. That's it, that's the whole job π if your changelog still saysUNRELEASEDand you forgot, this will find you. No hiding.ltnu(Long Time No Upload)(1) β π the name is giving "soβ¦ when was your last upload, bestie?" It lists all uploads of packages by the given uploader or maintainer, and displays them ordered by the last upload of that package, with the oldest uploads first. So you can genuinely see who's been ghosting the archive π«Άmanpage-alert(1) β locate binaries without corresponding manpages. Because a binary with no manpage is lowkey a crime π Needs[man-db].mass-bug(1) β mass-file bug reports. Yeah, MASS filer, like filing a whole bunch at once π₯ Needs[bsd-mailx | mailx].mergechanges(1) β merge.changesfiles from the same release but built on different architectures. Multi-arch chaos finally gets organized β¨mk-build-deps(1) β Given a package name and/or control file, this generates a binary package which may be installed to satisfy the build-dependencies of the given package. Basically it bakes you a lil dependency-satisfying package π Needs[equivs].mk-origtargz(1) β Rename upstream tarball, optionally changing the compression and removing unwanted files. Tarball glow-up + declutter in one move πΈ Needs[libfile-which-perl, unzip, xz-utils, file].namecheck(1) β Check project names are not already taken. Do this BEFORE you get attached to a name, bestie, I'm begging π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. Needs[patchutils, mutt]. It's giving "here's the receipts, filed properly" πorigtargz(1) β fetch the orig tarball of a Debian package from various sources, and unpack it. Needs[pristine-tar, pristine-lfs]. Fetch, unpack, slay π¦plotchangelog(1) β display information from a changelog graphically usinggnuplot. Yes, your changelog can be a pretty picture now. Needs[libtimedate-perl, gnuplot]βpts-subscribe(1) β subscribe to the PTS (Package Tracking System) for a limited period of time. Needs[bsd-mailx | mailx, at]. Temporary commitment only, we love boundaries πrc-alert(1) β list installed packages which have release-critical bugs. Needs[wget | curl]. It's the "who's failing rn" check πreproducible-check(1) β reports on the reproducible status of installed packages. For more details please see <https://reproducible-builds.org>. Reproducibility girlies rise πrmadison(1) β remotely query the Debian archive database about packages. Needs[liburi-perl, libjson-perl, wget | curl]. Ask the archive a question, get answers π₯sadt(1) β run DEP-8 tests. Needs[python3-debian, autodep8]. Test-running icon behavior, no notes β¨salsa(1) β manipulates salsa.debian.org repositories and users. Needs[libgitlab-api-v4-perl]. Salsa admin from your terminal, main character energy πsuspicious-source(1) β output a list of files which are not common source files. Needs[python3-magic]. It's the vibe check for your source tree π΅οΈ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 bydebcommitto generate svn tags. Needs[subversion]πtagpending(1) β runs from a Debian source tree and tags bugs that are to be closed in the latest changelog as pending. Needs[libsoap-lite-perl]. Changelog says closed β bugs get tagged pending πtransition-check(1) β Check a list of source packages for involvement in transitions for which uploads tounstableare currently blocked. Needs[libwww-perl, libyaml-libyaml-perl]. Know before you upload, fr fr πΈuscan(1) β Automatically scan for and download upstream updates. Uscan can also call a program such asuupdateto attempt to update the Debianised version based on the new update. Whilstuscancould 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. Needs[file, sopv | gpgv, libfile-dirlist-perl, libfile-touch-perl, libfile-which-perl, liblwp-protocol-https-perl, libmoo-perl, libwww-perl, unzip, xz-utils]*
Bestie listen: yes it CAN auto-release, but please test first π that's literally the manpage's own suggestion. Iconic behavior requires patience.
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. Needs[patch]β¨whodepends(1) β check which maintainers' packages depend on a package. Mystery solved: it's them. It was always them πwho-permits-upload(1) β Retrieve information about Debian Maintainer access control lists. Needs[gnupg, libencode-locale-perl, libwww-perl, debian-keyring]. The access-control lore, compiled π«Άwho-uploads(1) β determine the most recent uploaders of a package to the Debian archive. Needs[gnupg, debian-keyring, debian-maintainers, wget]. Receipts: pulled πwnpp-alert(1) β list installed packages which are orphaned or up for adoption. Needs[wget | curl]. These packages need a forever home, adopt don't shop π₯Ίwnpp-check(1) β check whether there is an open request for packaging or intention to package bug for a package. Needs[wget | curl]. Before you package, check if someone already called dibs βwrap-and-sort(1) β wrap long lines and sort items in packaging files. Needs[python3-debian]. Tidying your packaging files is self-care, actually πΈ
and that's the whole list, bestie π Every single one of these lives in the Debian Utilities family β that's the source you're reading from, and the page's title is DEVSCRIPTS(7), section 7 of the manual (the "miscellaneous" section, for the record). Go read man 7 devscripts on your own machine if you want the header to flex its version and date at you β that's where that live π
Now go write something, run something, package something. slay responsibly β¨
π¦ where this page comes from
- ubuntu stonking: devscripts 2.26.11ubuntu1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms