deb(5) | dpkg suite | deb(5) |
deb - Binair pakketformaat van Debian
bestandsnaam.deb
Het .deb-formaat is de indeling van een binair pakketbestand in Debian. Sinds dpkg 0.93.76 kan ermee gewerkt worden en standaard wordt ze gegenereerd sinds dpkg 1.2.0 en 1.1.1elf (i386/ELF-compilaties).
De hier beschreven indeling wordt gebruikt sinds Debian 0.93; de oude indeling wordt gedetailleerd beschreven in deb-old(5).
Het bestand is een ar-archief met een magische waarde van !<arch>. Enkel de gewone ar-archiefindeling wordt ondersteund zonder lange bestandsnaamextensies, maar met bestandsnamen met facultatief een afsluitende slash, wat de lengte ervan beperkt tot 15 lettertekens (van de 16 die toegelaten zijn). De grootte van bestanden is beperkt tot 10 ASCII decimalen, waardoor tot ongeveer 9536.74 MiB aan bestandselementen toegelaten is.
De tar-archieven die momenteel toegelaten zijn, zijn de indeling in oude stijl (v7), de pre-POSIX ustar-indeling, een subset van de GNU-indeling (de lange padnamen en lange koppelingsnamen in nieuwe stijl, die sinds dpkg 1.4.1.17 ondersteund worden; uitgebreide bestandsmetadata sinds 1.18.24) en de POSIX ustar-indeling (lange namen, ondersteund sinds dpkg 1.15.0). Niet-herkende tar-typevlaggen worden als een fout beschouwd. Binnen een tar-archief is de grootte van elk item beperkt tot 11 ASCII octale cijfers, hetgeen tot maximaal 8 GiB aan tar-items mogelijk maakt. De ondersteuning voor uitgebreide bestandsmetadata in de GNU-indeling maakt een grootte mogelijk van 95 bits voor een tar-item, negatieve tijdstempels en UID-, GID- en apparaatnummers van 63 bits.
Het eerste element wordt debian-binary genoemd en bevat een aantal regels, gescheiden door regeleinden. Momenteel, op het moment van het schrijven van deze man-pagina, heeft dit slechts één regel, het versienummer van de indeling, 2.0. Programma's die archieven lezen in de nieuwe indeling, moeten erop voorbereid zijn dat het onderversienummer verhoogd wordt en dat er nieuwe regels aanwezig kunnen zijn. En als dat het geval is, moeten ze die negeren.
Indien het hoofdversienummer gewijzigd werd, werd een niet-compatibele wijziging gemaakt en zou het programma moeten stoppen. Indien dit niet het geval is, dan zou het programma in staat moeten zijn probleemloos voort te gaan, tenzij het in het archief (behalve op het einde) een onverwacht element tegenkomt, zoals hierna beschreven wordt.
Het tweede vereiste element wordt control.tar genoemd. Het is een tar-archief dat de controle-informatie van het pakket bevat, ofwel niet-gecomprimeerd (ondersteund sinds dpkg 1.17.6) of gecomprimeerd met gzip (met de extensie .gz), met xz (met de extensie .xz, ondersteund sinds 1.17.6) of met zstd (met de extensie .zst, ondersteund sinds dpkg 1.21.18), onder de vorm van een reeks gewone bestanden, waarvan het bestand control, dat de kern van de controle-informatie bevat, verplicht deel uitmaakt. De bestanden md5sums, conffiles, triggers, shlibs en symbols bevatten facultatieve controle-informatie en de bestanden preinst, postinst, prerm en postrm zijn facultatieve scripts van de pakketonderhouder. Het controle-tar-archief kan facultatief een vermelding bevatten van ‘.’, de huidige map.
Het derde en laatste verplichte element wordt data.tar genoemd. Het bevat het bestandssysteem in de vorm van een tar-archief, dat ofwel niet-gecomprimeerd is (ondersteund sinds dpkg 1.10.24) of gecomprimeerd met gzip (met de extensie .gz), met xz (met de extensie .xz, ondersteund sinds dpkg 1.15.6), met zstd (met de extensie .zst, ondersteund sinds dpkg 1.21.18), met bzip2 (met de extensie .bz2, ondersteund sinds dpkg 1.10.24) of met lzma (met de extensie .lzma, ondersteund sinds dpkg 1.13.25).
Deze elementen moeten exact in deze volgorde voorkomen. Huidige implementaties moeten eventuele bijkomende elementen na data.tar negeren. Het kan zijn dat in de toekomst meer elementen gedefinieerd worden, die (zo mogelijk) na deze drie geplaatst zullen worden. Eventuele bijkomende elementen die ingevoegd zouden moeten worden na debian-binary en voor control.tar of data.tar en die door oudere programma's probleemloos genegeerd zouden moeten worden, zullen namen krijgen die beginnen met een laag liggend streepje, ‘_’.
Nieuwe elementen die niet probleemloos genegeerd zullen mogen worden, zullen ingevoegd worden voor data.tar en zullen namen hebben die met iets anders dan een laag liggend streepje beginnen, of (wat waarschijnlijker is) zullen tot gevolg hebben dat het hoofdversienummer verhoogd wordt.
application/vnd.debian.binary-package
application/x-debian-package
application/x-deb
deb-old(5), dpkg-deb(1), deb-control(5), deb-conffiles(5), deb-md5sums(5), deb-triggers(5), deb-shlibs(5), deb-symbols(5), deb-preinst(5), deb-postinst(5), deb-prerm(5), deb-postrm(5).
2023-05-11 | 1.21.22 |