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.