dpkg-split(1)

๐Ÿ’… dpkg-split(1) โ€” the dpkg suite's split/join girlie ๐ŸŽ€

okay so first things first, this whole page lives in the dpkg suite family, and it's literally the manual for dpkg-split(1). she's a niche little icon but she does her job fr fr ๐Ÿ’–


โœจ NAME โœจ

dpkg-split โ€” the Debian package archive split/join tool ๐Ÿฆ‹ like she literally takes big .deb files apart and puts them back together, no cap.


โœจ SYNOPSIS โœจ

dpkg-split [option...] command

โœจ DESCRIPTION โœจ

okay bestie, here's the vibe: dpkg-split splits Debian binary package files into smaller parts, then reassembles them again. why?? because sometimes you gotta store a huge package file on tiny media, like floppy disks ๐Ÿ˜ญ yes floppy disks. vintage. iconic. ๐Ÿ‘‘

you can run it manually with --split, --join and --info. very hands-on, very main character energy.

she also has an automatic mode, invoked with --auto, where she keeps a queue of parts she's seen but hasn't reassembled yet, and reassembles the package file once she's seen all its parts. ๐Ÿงš and --listq plus --discard let you manage that queue, so you're not just raw-dogging a mystery directory.

ngl all splitting, joining and queueing operations print informative messages on standard output โ€” and these may safely be ignored. so if you see chatter, that's just her talking. she's chatty. we love her. ๐Ÿ’ฌ


โœจ COMMANDS โœจ

  • -s, --split complete-archive [prefix] โ€” splits a single Debian binary package into several parts.

the parts are named prefix.NofM.deb where N is the part number, starting at 1, and M is the total number of parts (both in decimal). โญ

if no prefix is supplied then the complete-archive filename is taken, including directory, with any trailing .deb removed. ๐ŸŽ€

  • -j, --join part... โ€” joins the parts of a package file together, reassembling the original file exactly as it was before it was split. ๐Ÿซถ

the part files given as arguments must be all the parts of exactly the same original binary file. each part must occur exactly once in the argument list, though the parts do not need to be listed in order. (yes, the original really does say "to not need" โ€” we're keeping it, it's part of the lore ๐Ÿ’€)

the parts must all have been generated with the same part size specified at split time, which means they must usually have been generated by the same invocation of dpkg-split --split. ๐Ÿ”ฅ

the parts' filenames are not significant for the reassembly process. she doesn't care what you named them, she just knows. ๐Ÿ‘‘

by default the output file is called package_version_arch.deb.

  • -I, --info part... โ€” prints information about the part file(s) specified, in a human-readable format. arguments that aren't binary package parts produce a message saying so instead โ€” but still on standard output, because she's polite like that. ๐ŸŒธ
  • -a, --auto -o complete-output part โ€” automatically queue parts and reassemble a package if possible. โœจ

the part specified is examined and compared with other parts of the same package (if any) in the queue of package file parts.

if all parts of the package file of which part is a part are available, then the package is reassembled and written to complete-output (which should not usually already exist, though this is not an error ๐Ÿ™ˆ).

if not, then the part is copied into the queue and complete-output is not created.

if part is not a split binary package part then dpkg-split will exit with status 1; if some other trouble occurs then it will exit with status 2. ๐Ÿ’€

the --output or -o option must be supplied when using --auto. (if this were not mandatory the calling program would not know what output file to expect.) so like, it's not optional, bestie, it's the whole point.
  • -l, --listq โ€” lists the contents of the queue of packages to be reassembled. ๐Ÿ“‹

for each package file of which parts are in the queue, the output gives the name of the package, the parts in the queue, and the total number of bytes stored in the queue.

  • -d, --discard [package...] โ€” discards parts from the queue of those waiting for the remaining parts of their packages. ๐Ÿ—‘๏ธ

if no package is specified then the queue is cleared completely; if any are specified then only parts of the relevant package(s) are deleted.

  • -?, --help โ€” show the usage message and exit. ๐Ÿซถ
  • --version โ€” show the version and exit. โญ

โœจ OPTIONS โœจ

  • --depotdir directory โ€” specifies an alternative directory for the queue of parts awaiting automatic reassembly. the default is /var/lib/dpkg/parts. ๐ŸŽ€
  • --admindir directory โ€” set the administrative directory to directory. this is where the statoverride file is stored. defaults to ยซ/var/lib/dpkgยป if DPKG_ADMINDIR has not been set.

supported since dpkg 1.21.10. ๐Ÿ’œ

  • --root directory โ€” set the root directory to directory, which sets the installation directory to ยซdirectoryยป and the administrative directory to ยซdirectory/var/lib/dpkgยป if DPKG_ROOT has not been set.

supported since dpkg 1.21.10. ๐Ÿ’œ

  • -S, --partsize kibibytes โ€” specifies the maximum part size when splitting, in kibibytes (1024 bytes). the default is 450 KiB. ๐Ÿ“
  • -o, --output complete-output โ€” specifies the output file name for a reassembly.

this overrides the default for a manual reassembly (--join) and is mandatory for an automatic queue-or-reassemble (--auto). ๐Ÿ”ฅ

  • -Q, --npquiet โ€” when doing automatic queue-or-reassembly, dpkg-split usually prints a message if it's given a part that is not a binary package part. this option suppresses that message, so programs such as dpkg can cope with both split and unsplit packages without producing spurious messages. ๐Ÿคซ (npquiet = no noise, she's being quiet, slay)
  • --msdos โ€” obsolete since dpkg 1.23.0, it has no effect. ๐Ÿ’€ literally a ghost. she's still here for historical reasons and she does nothing. respect her journey.

โœจ EXIT STATUS โœจ

  • 0 โ€” the requested split, merge, or other command succeeded. --info commands count as successful even if the files are not binary package parts. ๐ŸŽ‰
  • 1 โ€” only occurs with --auto and indicates that the part file was not a binary package part. ๐Ÿ™ˆ
  • 2 โ€” fatal or unrecoverable error due to invalid command-line usage, a file that looked like a package part file but was corrupted, or interactions with the system, such as accesses to the database, memory allocations, etc. ๐Ÿ˜ญ

โœจ ENVIRONMENT โœจ

  • DPKG_ROOT โ€” if set and the --root option has not been specified, it will be used as the filesystem root directory.

supported since dpkg 1.21.10. ๐ŸŒฑ

  • DPKG_ADMINDIR โ€” if set and the --admindir or --root options have not been specified, it will be used as the dpkg data directory.

supported since dpkg 1.21.10. ๐ŸŒฑ

  • DPKG_DEBUG โ€” sets the debug mask from an octal value. the currently accepted flags are described in the dpkg --debug option, but not all these flags might have an effect on this program. ๐Ÿ”

supported since dpkg 1.21.10. ๐ŸŒฑ

  • DPKG_COLORS โ€” sets the color mode. the currently accepted values are: auto (default), always and never. ๐ŸŒˆ

supported since dpkg 1.18.5. ๐ŸŒฑ

  • DPKG_NLS โ€” if set, it will be used to decide whether to activate Native Language Support, also known as internationalization (or i18n) support. the accepted values are: 0 and 1 (default). ๐ŸŒ

supported since dpkg 1.22.7. ๐ŸŒฑ

  • SOURCE_DATE_EPOCH โ€” if set, it will be used as the timestamp (as seconds since the epoch) in the deb-split(5)'s ar(5) container. ๐Ÿ•ฐ๏ธ

supported since dpkg 1.18.11. ๐ŸŒฑ


โœจ FILES โœจ

  • /var/lib/dpkg/parts โ€” the default queue directory for part files awaiting automatic reassembly. ๐Ÿ“

the filenames used in this directory are in a format internal to dpkg-split and are unlikely to be useful to other programs, and in any case the filename format should not be relied upon. ๐Ÿ‘€ so like, don't build anything on top of those names, bestie, they're not stable.


โœจ SECURITY โœจ

okay this part is serious, so listen up ๐Ÿšจ

examining or joining untrusted split package archives should be considered a security boundary, and any breakage of that boundary stemming from these operations should be considered a security vulnerability. performing these operations over untrusted data as root is strongly discouraged. ๐Ÿ’€ like, don't.

auto-accumulating and discarding split package parts are considered privileged operations that might allow root escalation. these operations must never be delegated to an untrusted user or be done on untrusted packages, as that might allow root access to the system. ๐Ÿ”’

splitting package archives should only be performed over trusted data. ๐Ÿซถ


โœจ BUGS โœจ

  • full details of the packages in the queue are impossible to get without digging into the queue directory yourself. ๐Ÿ•ต๏ธโ€โ™€๏ธ like, she's not gonna hand you the receipts.
  • there is no easy way to test whether a file that may be a binary package part is one. ๐Ÿ˜ญ you just gotta vibe check it, and honestly the vibe check is unreliable.

โœจ SEE ALSO โœจ

deb(5), deb-control(5), dpkg-deb(1), dpkg(1). ๐Ÿฆ‹


and that's the whole page, bestie!! ๐Ÿ’– this was dpkg-split(1) from the dpkg suite, version 1.23.11-dirty, dated 2026-09-09 โ€” go forth and split responsibly, mwah ๐ŸŽ€โœจ๐Ÿ’…

๐Ÿ“ฆ where this page comes from