deb(5) | dpkg suite | deb(5) |
deb - Debians binära paketformat
filnamn.deb
.deb-formatet är Debians binära paketformat. Det förstås sedan dpkg 0.93.76, och genereras som förval sedan dpkg 1.2.0 och 1.1.1elf (i386/ELF-versioner).
Formatet som beskrivs här används sedan Debian 0.93; detaljer om det gamla formatet finns i deb-old(5).
Filen är ett ar-arkiv med det magiska numret !<arch>. Endast det gemensamma ar-arkivformatet stöds, utan utökningar för långa filnamn, men med filnamn som kan innehålla ett avslutande snedstreck, vilket begränsar deras längd till 15 tecken (från de 16 tillåtna). Filstorlekar begränsas till 10 decimala ASCII-tecken, vilket tillåter ungefär 9536,74 MiB filer.
De tar-arkiv som tillåts för närvarande är; den gamla stilens format (v7), för-POSIX-ustar-formatet, en delmängd av GNU-formatet (långa sökvägsnamn och länknamnen i den nya stilen, stöds sedan dpkg 1.4.1.17; stora filmetadata sedan dpkg 1.18.24), och POSIX-ustar-formatet (långa namn stöds sedan dpkg 1.15.0). Okända tar-typflaggor anses utgöra fel. Enskilda tar-poststorlekar inuti ett tar-arkiv är begränsade till 11 oktala ASCII-siffror, vilket tillåter tar-poster upp till 8 GiB. GNU:s stora filmetadata tillåter 95 bitar stora tar-poststorlekar och negativa tidsstämplar, og 63-bitars UID, GID och enhetsnummer.
Den första posten i arkivet heter debian-binary och innehåller ett antal rader, avdelade med nyradstecken. För närvarande finns endast en rad, formatets versionsnummer, 2.0. Program som läser arkiv i det nya formatet bör vara förberedda på att underversionsnumret kan komma att ökas, och att nya rader kan förekomma, och ska i så fall ignorera dessa.
Om huvudversionsnumret har ändrats har en inkompatibel ändring införts, och programmet ska avbrytas. Om så inte har gjorts, ska programmet kunna fortsätta utan problem, såvida det inte stöter på en oväntad post i arkivet (förutom i slutet), enligt vad beskrivs nedan.
Den andra nödvändiga posten heter control.tar. Det är ett tar-arkiv som innehåller paketets styrinformation, antingen okomprimerat (stöds sedan dpkg 1.17.6), eller komprimerat med gzip (med filtillägget .gz) eller xz (med filtillägget .xz, stöds sedan 1.17.6), zstd (med filtillägget .zst, stöds sedan dpkg 1.21.18), lagrade som ett antal vanliga filer, av vilka filen control krävs och innehåller grundläggande styrinformation, filerna md5sums, conffiles, triggers, shlibs och symbols innehåller valfri styrinformation, och filerna preinst, postinst, prerm och postrm är valfria utvecklarskript. Tarbollen control kan eventuellt innehålla en post för ”.”, den aktuella katalogen.
Den tredje och sista nödvändiga posten heter data.tar. Den innehåller filsystemet som ett tar-arkiv, antingen okomprimerat (stöds sedan dpkg 1.10.24), eller komprimerat med gzip (med filtillägget .gz), xz (med filtillägget .xz, stöds sedan dpkg 1.15.6), zstd (med filtillägget .zst, stöds sedan dpkg 1.21.18), bzip2 (med filtillägget .bz2, stöds sedan dpkg 1.10.24) eller lzma (med filtillägget .lzma, stöds sedan dpkg 1.13.25).
Dessa poster måste ligga i exakt denna ordning. Nuvarande implementationer bör ignorera eventuella ytterligare poster efter data.tar. Ytterligare poster kan komma att definieras i framtiden, och kommer (om möjligt) placeras efter dessa tre. Eventuella ytterligare poster som kan komma att behöva läggas till efter debian-binary och före control.tar eller data.tar och som kan ignoreras av äldre program utan problem kommer att ha namn som börjar med understreck, ”_”.
Nya poster som inte kommer att kunna ignoreras utan problem kommer att läggas in före data.tar med namn som börjar med något annat än understreck, eller (mer troligt) göra att huvudversionsnumret ökas.
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).
Peter Krefting och Daniel Nylander.
2023-05-11 | 1.21.22 |