Deb (file format)
Template:Short description Template:Lowercase title Template:Infobox file format
deb is the format, as well as filename extension of the software package format for the Debian Linux distribution and its derivatives.
Design

Debian packages are standard Unix ar archives that include two tar archives. One archive holds the control information and another contains the installable data.<ref name="rh20100917">Template:Cite web</ref>
dpkg provides the basic functionality for installing and manipulating Debian packages. Generally end users don't manage packages directly with dpkg but instead use the APT package management software or other APT front-ends such as aptitude (nCurses) and synaptic (GTK).<ref>Template:Cite web</ref>
Debian packages can be converted into other package formats and vice versa using alien, and created from source code using checkinstall or the Debian Package Maker.<ref>Template:Cite web</ref>
Some core Debian packages are available as udebs ("micro debs"), and are typically used only for bootstrapping a Debian installation. Although these files use the udeb filename extension, they adhere to the same structure specification as ordinary deb files. However, unlike their deb counterparts, udeb packages contain only essential functional files.<ref>Template:Cite web</ref> In particular, documentation files are normally omitted. udeb packages are not installable on a standard Debian system, but are used in Debian-Installer.
Implementation


Prior to Debian 0.93, a package consisted of a file header and two concatenated gzip archives.<ref>Template:Cite web</ref> Since Debian 0.93, a deb package is implemented as an ar archive.<ref>Template:Cite web</ref> This archive contains three files in a specific order:<ref name="manpagedeb5">Template:Cite web</ref><ref name="tldp001">Template:Cite web</ref>
- debian-binary - A text file named
debian-binarycontaining a single line giving the package format version number. (2.0for current versions of Debian).<ref name="tldp001"/> - control archive - A tar archive named
control.tarcontains the maintainer scripts and the package meta-information (package name, version, dependencies and maintainer). Compressing the archive with gzip or xz and zstd is supported. The file extension changes to indicate the compression method.<ref name="tldp001"/><ref name="rh20100917"/> - data archive - A tar archive named
data.tarcontains the actual installable files. Compressing the archive with gzip, bzip2, lzma or xz and zstd is supported. The file extension changes to indicate the compression method.<ref name="tldp001"/><ref name="rh20100917"/>
Control archive
The control archive contents can include the following files:
- control contains a brief description of the package as well as other information such as its dependencies.<ref>Template:Cite web</ref><ref>Template:Cite web</ref><ref>Template:Cite web</ref><ref>Template:Cite web</ref>
- md5sums contains MD5 checksums of all files in the package in order to detect corrupt or incomplete files.<ref>Template:Cite web</ref>
- conffiles lists the files of the package that should be treated as configuration files. Configuration files are not overwritten during an update unless specified.<ref name="debian-faq-7">Template:Cite web</ref>
- preinst, postinst, prerm and postrm are optional scripts that are executed before or after installing or removing the package.<ref name="debian-faq-7"/><ref>Template:Cite web</ref>
- config is an optional script that supports the debconf configuration mechanism.<ref>Template:Cite web</ref>
- shlibs list of shared library dependencies.<ref>Template:Cite web</ref><ref>Template:Cite web</ref>
Signed packages
Debian-based distributions support OpenPGP signature verification of signed Debian packages, but most (if not all) have this feature disabled by default.<ref name="packagecloud20141028">Template:Cite web</ref> Instead packages are verified by signing the repository metadata (i.e. Release files). The metadata files in turn include checksums for the repository files as a means to verify authenticity of the files.<ref>Template:Cite web</ref><ref>Template:Cite web</ref> Currently there are two different implementations for signing individual packages. The first is done via the debsigs / debsig-verify toolset, which is supported by dpkg.<ref name="packagecloud20141028"/><ref>Template:Cite web</ref> The second is done through the dpkg-sig program which is not supported by dpkg, so the packages have to be manually checked with the dpkg-sig program.<ref name="packagecloud20141028"/><ref>Template:Cite web</ref><ref>Template:Cite web</ref><ref>Template:Cite web</ref> Both formats add new sections to the ar archive to store the signature information, but the formats are not compatible with one another.<ref name="packagecloud20141028"/> Neither of the modifications to the package format are listed in the official Debian handbook or man page about the binary package format.<ref>Template:Cite web</ref><ref name="manpagedeb5"/>
Adoption
- Debian packages are used in distributions based on Debian, such as, Linux Mint (LMDE),<ref>Template:Cite web</ref><ref>Template:Cite web</ref> KDE neon, Ubuntu and many others.
- Fink, a port of dpkg and APT to macOS, uses deb packages.<ref>Template:Cite web</ref><ref>Template:Cite web</ref>
- Nexenta OS, a discontinued OS based on OpenSolaris, included Debian package management software and the use of deb packages.
- Debian GNU/kFreeBSD, an OS that uses a GNU based userland and the FreeBSD kernel.
- Debian GNU/Hurd.
- Some jailbroken iOS devices (iPhones, iPads and iPods).<ref>Template:Cite web</ref><ref>Template:Cite web</ref>
- Ipkg and Opkg, which both use .ipk packages that resemble Debian's dpkg
See also
References
External links
- Debian FAQ: Basics of the Debian package management system
- Debreate - A powerful Debian Package Builder
- .deb feature support
- Manipulating debs directly with standard utilities
- Anatomy of a Debian package video
Template:Debian Template:Archive formats Template:Package management systems