DEBDELTAS(1)
β¨ debdeltas β the manual, but make it cute β¨
okay so bestie, this is the manual page for debdeltas, a User Command from the DEBDELTAS(1) page. it computes deltas between Debian packages and it is honestly kind of iconic. let's get into it π«Ά
πΈ NAME πΈ
debdeltas β compute deltas between Debian packages. that's it, that's the vibe. π
π SYNOPSIS π
debdeltas [OPTION]... ARGS ...
π¦ DESCRIPTION π¦
so debdeltas computes deltas between the old and new versions of Debian packages. periodt.
and if you're sitting there like "bestie what even is a delta" β the full explanation lives in debdelta(1). go read that one, iykyk. π
π COMMAND ARGUMENTS π
okay so, in all of the following, ARGS can be any of these three things:
- a Debian binary file (usually, a file ending in
.deb) π - a directory containing such files π
- a
Packagesfile (that is, an index file such as those found in Debian mirrors β even the zipped ones β seeapt-ftparchive(1))
we're gonna call cmdline all such args that are not related to an option. no cap.
as a first step, debdeltas builds an internal list of Debian packages. to do this, it parses all ARGS of the options --alt, --old, and those ARGS given as non-option arguments (the aforementioned cmdline args). and then:
- if the argument is a Debian package β
debdeltasadds it to the list β¨ - if the argument is a directory β
debdeltasscans it for Debian packages to be added to the list π - if the argument is
Packagesfiles βdebdeltasparses it and adds all Debian packages to the list π¦
then debdeltas groups all found Debian packages by name and architecture. slay.
for each group, the newest cmdline version is isolated, and then deltas are computed from all --old versions to that version. π«
these deltas are stored in many delta files with appropriate names of the form:
name_oldversion_newversion_architecture.debdelta
the location of the delta files is specified by the --dir option. π
note that the location of files in aPackagesindex is specified relative to the base of the mirror, e.g.Filename: pool/main/x/xxx/xxx_3_i386.deb. for this reason, anyPackagesargument must be presented with a long path (that contains at least thedistsdirectory). don't be lazy about it bestie π
note also that the same directory or index can be provided many times β as--old, as--alt, and as a cmdline argument. it's giving "no thoughts, head empty, just parse it again" π
note also thatdebdeltaswill skip all packages that are smaller than10KB. tiny babies don't get deltas. π
π MAIN OPTIONS π
--dir DIRβ force saving of deltas in this DIR (otherwise they go in the dir of the newerdeb_file). π--alt ARGSβ this is parsed as the non-option command line, but the found packages are never considered for a delta. they are considered though when--clean-deltasis used, to decide if to delete a delta; and they're useful to find debs that are deleted from indexes and moved elsewhere. multiple--altcan be specified. π§--old ARGSβ this is parsed as the non-option command line, and the found packages are considered as the older versions. multiple--oldcan be specified. moreover, when scanning aPackagesindex, it is not an error if files do not exist, as long as they have been moved in a--altdirectory. note that, if no--oldis specified, then no deltas will be generated π (yes really, zero, nada).--forensicdir DIRβ write hashes files; these are to be compared with those produced bydebdelta-upgrade --forensic=...when a delta fails. π
π The double slash π
okay this one is lowkey my favorite. listen up. π
if a directory path is provided as argument to --dir, and it ends in //, then this triggers a specific behaviour related to files found in Packages indexes (as presented in the commandline). so if a package in an index is stored in pool/main/x/xxx/xxx_3_i386.deb, and --dir is /tmp/foobar//, then the delta will be saved in:
/tmp/foobar/pool/main/x/xxx/xxx_2_3_i386.debdelta
the same is true for --alt (and is useful to find old versions of a package). the double slash is doing the most and we love her for it π
β¨
β OTHER OPTIONS β
--signing-key KEYβ key used to sign the deltas (using GnuPG). π-n Nβ how many deltas to produce at maximum for each unique package/arch (default unlimited). π₯--clean-deltasβ delete deltas that upgrade to packages versions that are not found in the cmdline ARGS, and are at least two days old (according tomtime). π§Ή--no-md5β do not include MD5 info in debdelta. π--needsoldβ create a patch that can only be used if the old.debis available. π--delta-algo ALGOβ use a specific backend for computing binary diffs; possible values are:xdeltaxdelta-bzipxdelta3bsdiff. π οΈ-M Mbβ maximum memory to use (for'bsdiff'or'xdelta'). π§--testβ check that the patch does apply. β-vβ verbose (can be added multiple times). π£οΈ-dβ print traceback on errors; save useful info in temporary files in case that a backend crashes. π
(if '-d' is added multiple times, it also adds to the patches other extra debugging checks: only for advanced bug tracking). π
-kβ keep temporary files (use for debugging). ποΈ--gpg-homeβ specify a different home for GnuPG, default for root is/etc/debdelta/gnupgwhile for other users is unset. see--homediringpg(1)for details. π--disable-feature FEATUREβ disable an internal feature. see the documentation inREADME.features. π«--no-actβ just list the deltas that would be created. π»
π SECURITY π
see debdelta(1). (yes, we're outsourcing that one. go look bestie π«Ά)
π¦ EXIT STATUS π¦
see debdelta(1). (also outsourcing, sorry not sorry π
)
π EXAMPLES π
this one generates all deltas to upgrade from the old versions in ~/mydebs to the newest version in ~/mydebs, and stores the deltas in /tmp/:
debdeltas --dir /tmp/ --old ~/mydebs ~/mydebs
and this one generates all deltas to upgrade main/i386 from lenny to squeeze, and stores the deltas in a pool structure under /tmp/:
debdeltas --dir /tmp// --old /mirror/debian/dists/lenny/main/binary-i386/Packages.gz /mirror/debian/dists/squeeze/main/binary-i386/Packages.gz
see also the example scripts /usr/share/debdelta/debmirror-delta-security and /usr/share/debdelta/debmirror-deltas β they're giving main character energy fr fr β¨
π REPORTING BUGS π
report bugs to <mennucc1@debian.org>. be nice, they're doing their best π«Ά
π AUTHORS π
Debdelta was written and is copyright Β© 2006-09 Andrea Mennucci.
This man page was written by Jegou Pierre-yves <pierreyves.jeg@voila.fr>.
π COPYING π
This is free software. You may redistribute copies of it under the terms of the GNU Library General Public License <http://www.gnu.org/licenses/lgpl-2.0.html>. There is NO WARRANTY, to the extent permitted by law.
π¦ SEE ALSO π¦
debpatch(1), debdelta(1), /usr/share/doc/debdelta/README.
okay and that's the whole page bestie!! this was debdeltas from the DEBDELTAS(1) manual, version dated aug 2009, and the footer said debdeltas β yeah, that's right, she named herself twice, iconic behavior. now go compute some deltas. mwah π
πβ¨
π¦ where this page comes from
- debian bookworm: debdelta 0.67 Β· GPL-2.0-only
- debian trixie: debdelta 0.70+nmu1 Β· GPL-2.0-only
- ubuntu jammy: debdelta 0.67 Β· GPL-2.0-only
- ubuntu noble: debdelta 0.70 Β· GPL-2.0-only
- ubuntu questing: debdelta 0.70+nmu2
- ubuntu resolute: debdelta 0.70+nmu2build1 Β· GPL-2.0-only
- ubuntu stonking: debdelta 0.70+nmu2build1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms