CHANGESTOOL(1)

✨ CHANGESTOOL (1) ✨

okay so this is changestool, from the reprepro family, and it's literally the little sidekick you didn't know you needed for Debian .changes files πŸ’…


πŸŽ€ NAME πŸŽ€

changestool β€” verify, dump, modify, create or fix Debian .changes files. that's the whole job, and she does it slayfully.


πŸ¦‹ SYNOPSIS πŸ¦‹

changestool --help

changestool [ options ] .changes-filename command [ per-command-arguments ]

🌸 DESCRIPTION 🌸

okay bestie, picture this: changestool is a little program that operates on Debian .changes files β€” you know, the ones dpkg-genchanges(1) produces and the ones you feed your built Debian packages into, so repository managers like reprepro(1) or dak can do their thing. she's small, she's focused, she's iconic. πŸ‘‘


πŸ”₯ EXAMPLES πŸ”₯

changestool bloat.changes setdistribution local

this one will modify the Distribution: header inside bloat.changes to say local instead of whatever was there before. glow-up complete ✨


changestool reprepro_1.2.0-1.local_sparc.changes includeallsources

this will modify the given file to also list the .orig.tar.gz it does not list β€” because you forgot to build it with dpkg-buildpackage -sa. we've all been there, no judgment 🫢


changestool blafasel_1.0_abacus.changes updatechecksums

this will update the md5sums to those of the files referenced by this file. so you can do quick'n'dirty corrections to them before uploading to your private package repository. lowkey chaotic, highkey useful πŸ’€


changestool --create test.changes add bla_1-1.dsc bla_1-1_abacus.deb

this will add the specified files (format detected by filename β€” use adddeb or adddsc if you know it). and if the file test.changes does not exist yet, a minimal one will be generated. though ngl, that might be too minimal for most direct uses πŸ™ˆ


πŸ’œ GLOBAL OPTIONS πŸ’œ

options can be specified before the command. each one affects a different subset of commands and is ignored by other commands. (yes, ignored. she's selective, she's got main character energy.)

  • -h, --help β€” displays a short list of options and commands with description. the "help me help you" of flags πŸŽ€
  • -o, --outputdir dir β€” not yet implemented. that's it. that's the option. it's giving placeholder 😭
  • -s, --searchpath path β€” a colon-separated list of directories to search for files if they're not found in the directory of the .changes file. your backup squad of directories 🫢
  • --create β€” flag for the commands starting with add, to create the .changes file if it does not yet exist. birthday party for a file that wasn't born yet πŸŽ‚
  • --create-with-all-fields β€” also a flag for the commands starting with add, to create the .changes file if it does not yet exist. unlike --create, this creates more fields to make things like dupload happier. currently that creates fake Urgency and Changes fields. more fields = more to love, periodt ✨

πŸ’… COMMANDS πŸ’…

  • verify β€” check for inconsistencies in the specified .changes file and the files referenced by it. vibe check, but for your package metadata πŸ”
  • updatechecksums [ filename ] β€” update the checksum (md5sum and size) information within the specified .changes file and all .dsc files referenced by it. without arguments, all files will be updated. to only update specific files, give their filename (without path) as arguments. refresh her numbers, she deserves it πŸ’–
  • setdistribution [ distributions ] β€” change the Distribution: header to list the remaining arguments. tell her where she belongs 🌈
  • includeallsources [ filename ] β€” list all files referenced by .dsc files mentioned in the .changes file, in said file. without arguments, all missing files will be included. to only include specific files, give their filename (without path) as arguments.

take a look at the description of -si, -sa and -sd in the manpage of dpkg-genchanges/dpkg-buildpackage for how to avoid having to do this at all πŸ‘€ (yes, prevention > cure, we know)

note that while reprepro will just ignore files listed in a .changes file when it already has the file with the same size and md5sum, dak might choke in that case. so… yeah. different tolerances πŸ’€
  • adddeb filenames β€” add the .deb and .udeb files specified by their filenames to the .changes file. filenames without a slash will be searched in the current directory, the directory the changes file resides in, and in the directories specified by the --searchpath. come on in, debbies πŸ¦‹
  • adddsc filenames β€” add the .dsc files specified by their filenames to the .changes file. filenames without a slash will be searched in the current directory, in the directory the changes file resides in, and in the directories specified by the --searchpath. dsc girls rise 🌸
  • addrawfile filenames β€” add the files specified by their filenames to the .changes file. filenames without a slash will be searched in the current directory, in the directory the changes file resides in, and in the directories specified by the --searchpath. raw, unfiltered, unbothered πŸ’…
  • add filenames β€” behaves like adddsc for filenames ending in .dsc, like adddeb for filenames ending in .deb or .udeb, and like addrawfile for all other filenames. she's versatile, she's a multitasker, she contains multitudes πŸ‘‘
  • dumbremove filenames β€” remove the specified files from the .changes file. no other fields (Architectures, Binaries, …) are updated and no related file is removed. just the given files (which must be specified without any /) are no longer listed in the .changes file (and only no longer in the changes file). it's called dumb for a reason bestie, she's not checking anything, she's just ✨removing✨ 😭

🌟 SEE ALSO 🌟

reprepro(1), dpkg-genchanges(1), dpkg-buildpackage(1), md5sum(1). the whole friend group πŸ’–


πŸ› REPORTING BUGS πŸ›

report bugs or wishlist requests to the Debian BTS (e.g. by using reportbug reperepro) or directly to <brlink@debian.org>. yes, that's reperepro with the extra e β€” write it exactly like that, don't come for me πŸ™ˆ


Copyright Β© 2006-2009 Bernhard R. Link

this is free software; see the source for copying conditions. there is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. like, zero warranty, none, nada πŸ’€


and that's the page, bestie 🫢 β€” brought to you by reprepro, dated 2010-03-19, and shipped with love in the CHANGESTOOL(1) manpage. go forth and fix those .changes files βœ¨πŸ’…

πŸ“¦ where this page comes from