diff options
Diffstat (limited to '')
-rw-r--r-- | man/deb-control.pod | 485 |
1 files changed, 485 insertions, 0 deletions
diff --git a/man/deb-control.pod b/man/deb-control.pod new file mode 100644 index 0000000..4c8d006 --- /dev/null +++ b/man/deb-control.pod @@ -0,0 +1,485 @@ +# dpkg manual page - deb-control(5) +# +# Copyright © 1995 Raul Miller, Ian Jackson, Ian Murdock +# Copyright © 1999 Ben Collins <bcollins@debian.org> +# Copyright © 2000 Wichert Akkerman <wakkerma@debian.org> +# Copyright © 2007-2011, 2013-2015 Guillem Jover <guillem@debian.org> +# Copyright © 2008-2012 Raphaël Hertzog <hertzog@debian.org> +# +# This is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +=encoding utf8 + +=head1 NAME + +deb-control - Debian binary package control file format + +=head1 SYNOPSIS + +B<DEBIAN/control> + +=head1 DESCRIPTION + +Each Debian binary package contains a B<control> file in its B<control> +member, and its L<deb822(5)> format is a subset of the B<debian/control> +template source control file in Debian source packages, +see L<deb-src-control(5)>. + +This file contains a number of fields. +Each field begins with a tag, such as +B<Package> +or +B<Version> +(case insensitive), followed by a colon, and the body of the field +(case sensitive unless stated otherwise). +Fields are delimited only by field tags. +In other words, field text +may be multiple lines in length, but the installation tools will +generally join lines when processing the body of the field (except +in the case of the +B<Description> +field, see below). + +=head1 FIELDS + +=over + +=item B<Package:> I<package-name> (required) + +The value of this field determines the package name, and is used to +generate file names by most installation tools. + +=item B<Package-Type:> B<deb>|B<udeb>|I<type> + +This field defines the type of the package. +B<udeb> is for size-constrained packages used by the debian installer. +B<deb> is the default value, it is assumed if the field is absent. +More types might be added in the future. + +=item B<Version:> I<version-string> (required) + +Typically, this is the original package's version number in whatever form +the program's author uses. +It may also include a Debian revision number (for non-native packages). +The exact format and sorting algorithm +are described in +L<deb-version(7)>. + +=item B<Maintainer:> I<fullname-email> (recommended) + +Should be in the format “Joe Bloggs E<lt>jbloggs@foo.comE<gt>”, and is typically +the person who created the package, as opposed to the author of the +software that was packaged. + +=item B<Description:> I<short-description> (recommended) + +=item S< >I<long-description> + +The format for the package description is a short brief summary on the +first line (after the B<Description> field). +The following lines should be used as a longer, more detailed description. +Each line of the long description +must be preceded by a space, and blank lines in the long description must +contain a single ‘B<.>’ following the preceding space. + +=item B<Section:> I<section> + +This is a general field that gives the package a category based on the +software that it installs. +Some common sections are B<utils>, B<net>, B<mail>, B<text>, +B<x11>, etc. + +=item B<Priority:> I<priority> + +Sets the importance of this package in relation to the system as a whole. +Common priorities are B<required>, B<standard>, B<optional>, +B<extra>, etc. + +=back + +The +B<Section> +and +B<Priority> +fields usually have a defined set of accepted values based on the specific +distribution policy. + +=over + +=item B<Installed-Size:> I<size> + +The approximate total size of the package's installed files, in KiB units. +The algorithm to compute the size is described in L<deb-substvars(5)>. + +=item B<Protected:> B<yes>|B<no> + +This field is usually only needed when the answer is B<yes>. +It denotes a package that is required mostly for proper booting of the system +or used for custom system-local meta-packages. +L<dpkg(1)> or any other installation tool will not allow a B<Protected> +package to be removed (at least not without using one of the force options). + +Supported since dpkg 1.20.1. + +=item B<Essential:> B<yes>|B<no> + +This field is usually only needed when the answer is B<yes>. +It denotes a package that is required for the packaging system, for +proper operation of the system in general or during boot (although the latter +should be converted to B<Protected> field instead). +L<dpkg(1)> or any other installation tool will not allow an B<Essential> +package to be removed (at least not without using one of the force options). + +=item B<Build-Essential:> B<yes>|B<no> + +This field is usually only needed when the answer is B<yes>, and is +commonly injected by the archive software. +It denotes a package that is required when building other packages. + +=item B<Architecture:> I<arch>|B<all> (required) + +The architecture specifies which type of hardware this package was compiled +for. +Common architectures are B<amd64>, B<armel>, B<i386>, B<powerpc>, +etc. +Note that the +B<all> +value is meant for packages that are architecture independent. +Some examples of this are shell and Perl scripts, and documentation. + +=item B<Origin:> I<name> + +The name of the distribution this package is originating from. + +=item B<Bugs:> I<url> + +The I<url> of the bug tracking system for this package. +The current +used format is I<bts-type>B<://>I<bts-address>, like +B<debbugs://bugs.debian.org>. + +=item B<Homepage:> I<url> + +The upstream project home page I<url>. + +=item B<Tag:> I<tag-list> + +List of tags describing the qualities of the package. +The description and +list of supported tags can be found in the B<debtags> package. + +=item B<Multi-Arch:> B<no>|B<same>|B<foreign>|B<allowed> + +This field is used to indicate how this package should behave on a multi-arch +installations. + +=over + +=item B<no> + +This value is the default when the field is omitted, in which case +adding the field with an explicit B<no> value is generally not needed. + +=item B<same> + +This package is co-installable with itself, but it must not be used to +satisfy the dependency of any package of a different architecture from +itself. + +=item B<foreign> + +This package is not co-installable with itself, but should be allowed to +satisfy a non-arch-qualified dependency of a package of a different arch +from itself (if a dependency has an explicit arch-qualifier then the +value B<foreign> is ignored). + +=item B<allowed> + +This allows reverse-dependencies to indicate in their B<Depends> +field that they accept this package from a foreign architecture by +qualifying the package name with B<:any>, but has no effect otherwise. + +=back + +=item B<Source:> I<source-name> [B<(>I<source-version>B<)>] + +The name of the source package that this binary package came from, if it is +different than the name of the package itself. +If the source version differs from the binary version, then the +I<source-name> will be followed by a I<source-version> in parenthesis. +This can happen for example on a binary-only non-maintainer upload, or when +setting a different binary version via «B<dpkg-gencontrol -v>». + +=item B<Subarchitecture:> I<value> + +=item B<Kernel-Version:> I<value> + +=item B<Installer-Menu-Item:> I<value> + +These fields are used by the debian-installer and are usually not needed. +For more details about them, see +L<https://salsa.debian.org/installer-team/debian-installer/-/raw/master/doc/devel/modules.txt>. + +=item B<Depends:> I<package-list> + +List of packages that are required for this package to provide a +non-trivial amount of functionality. +The package maintenance software +will not allow a package to be installed if the packages listed in its +B<Depends> +field aren't installed (at least not without using the force options). +In an installation, the postinst scripts of packages listed in B<Depends> +fields are run before those of the packages which depend on them. +On the +opposite, in a removal, the prerm script of a package is run before +those of the packages listed in its B<Depends> field. + +=item B<Pre-Depends:> I<package-list> + +List of packages that must be installed +B<and> +configured before this one can be installed. +This is usually used in the +case where this package requires another package for running its preinst +script. + +=item B<Recommends:> I<package-list> + +Lists packages that would be found together with this one in all but +unusual installations. +The package maintenance software will warn the +user if they install a package without those listed in its +B<Recommends> +field. + +=item B<Suggests:> I<package-list> + +Lists packages that are related to this one and can perhaps enhance +its usefulness, but without which installing this package is perfectly +reasonable. + +=back + +The syntax of +B<Depends>, +B<Pre-Depends>, +B<Recommends> +and +B<Suggests> +fields is a list of groups of alternative packages. +Each group is a list +of packages separated by vertical bar (or “pipe”) symbols, +‘B<|>’. +The groups are separated by commas. +Commas are to be read as “AND”, and pipes as “OR”, with pipes +binding more tightly. +Each package name is optionally followed by an architecture qualifier +appended after a colon ‘B<:>’, optionally followed by a version +number specification in parentheses. + +An architecture qualifier name can be a real Debian architecture name +(since dpkg 1.16.5) or B<any> (since dpkg 1.16.2). +If omitted, the default is the current binary package architecture. +A real Debian architecture name will match exactly that architecture for +that package name, B<any> will match any architecture for that package +name if the package has been marked as B<Multi-Arch: allowed>. + +A version number may start with a ‘B<E<gt>E<gt>>’, in which case any later +version will match, and may specify or omit the Debian packaging revision +(separated by a hyphen). +Accepted version relationships are ‘B<E<gt>E<gt>>’ for greater than, +‘B<E<lt>E<lt>>’ for less than, ‘B<E<gt>=>’ for greater than or +equal to, ‘B<E<lt>=>’ for less than or equal to, and ‘B<=>’ +for equal to. + +=over + +=item B<Breaks:> I<package-list> + +Lists packages that this one breaks, for example by exposing bugs +when the named packages rely on this one. +The package maintenance +software will not allow broken packages to be configured; generally +the resolution is to upgrade the packages named in a +B<Breaks> +field. + +=item B<Conflicts:> I<package-list> + +Lists packages that conflict with this one, for example by containing +files with the same names. +The package maintenance software will not allow conflicting packages to be +installed at the same time. +Two +conflicting packages should each include a +B<Conflicts> +line mentioning the other. + +=item B<Replaces:> I<package-list> + +List of packages files from which this one replaces. +This is used for +allowing this package to overwrite the files of another package and +is usually used with the +B<Conflicts> +field to force removal of the other package, if this one also has the +same files as the conflicted package. + +=back + +The syntax of +B<Breaks>, +B<Conflicts> +and +B<Replaces> +is a list of package names, separated by commas (and optional whitespace). +In the +B<Breaks> +and +B<Conflicts> +fields, the comma should be read as “OR”. +An optional architecture qualifier can also be appended to the package name +with the same syntax as above, but the default is B<any> instead of the +binary package architecture. +An optional version can also be given with the same syntax as above for the +B<Breaks>, +B<Conflicts> +and +B<Replaces> +fields. + +=over + +=item B<Enhances:> I<package-list> + +This is a list of packages that this one enhances. +It is similar to B<Suggests> but in the opposite direction. + +=item B<Provides:> I<package-list> + +This is a list of virtual packages that this one provides. +Usually this is used in the case of several packages all providing the +same service. +For example, sendmail and exim can serve as a mail server, so they +provide a common package (“mail-transport-agent”) on which +other packages can depend. +This will allow sendmail or exim to serve as a valid option to satisfy +the dependency. +This prevents the packages that depend on a mail server from having to +know the package names for all of them, and using ‘B<|>’ to +separate the list. + +=back + +The syntax of +B<Provides> +is a list of package names, separated by commas (and optional whitespace). +An optional architecture qualifier can also be appended to the package +name with the same syntax as above. +If omitted, the default is the current binary package architecture. +An optional exact (equal to) version can also be given with the same +syntax as above (honored since dpkg 1.17.11). + +=over + +=item B<Built-Using:> I<package-list> + +This dependency field lists extra source packages that were used during the +build of this binary package, for license compliance purposes. +This is an indication to the archive maintenance software that these extra +source packages must be kept whilst this binary package is maintained. +This field must be a comma-separated list of source package names with strict +‘B<=>’ version relationships enclosed within parenthesis. +Note that the archive maintenance software is likely to refuse to accept an +upload which declares a B<Built-Using> relationship which cannot be satisfied +within the archive. + +=item B<Static-Built-Using:> I<package-list> + +This dependency field lists extra source packages that were used during the +build of this binary package, for static building purposes (for example +linking against static libraries, builds for source-centered languages such +as Go or Rust, usage of header-only C/C++ libraries, injecting data blobs +into code, etc.). +This is useful to track whether this package might need to be rebuilt when +source packages listed here have been updated, for example due to security +updates. +This field must be a comma-separated list of source package names with strict +‘B<=>’ version relationships enclosed within parenthesis. + +Supported since dpkg 1.21.3. + +=item B<Built-For-Profiles:> I<profile-list> (obsolete) + +This field used to specify a whitespace separated list of build profiles that +this binary packages was built with (since dpkg 1.17.2 until 1.18.18). +The information previously found in this field can now be found in the +B<.buildinfo> file, which supersedes it. + +=item B<Auto-Built-Package:> I<reason-list> + +This field specifies a whitespace separated list of reasons why this package +was auto-generated. +Binary packages marked with this field will not appear in the +I<debian/control> template source control file. +The only currently used reason is B<debug-symbols>. + +=item B<Build-Ids:> I<elf-build-id-list> + +This field specifies a whitespace separated list of ELF build-ids. +These +are unique identifiers for semantically identical ELF objects, for each +of these within the package. + +The format or the way to compute each build-id is not defined by design. + +=back + +=head1 EXAMPLE + + Package: grep + Essential: yes + Priority: required + Section: base + Maintainer: Wichert Akkerman <wakkerma@debian.org> + Architecture: sparc + Version: 2.4-1 + Pre-Depends: libc6 (>= 2.0.105) + Provides: rgrep + Conflicts: rgrep + Description: GNU grep, egrep and fgrep. + The GNU family of grep utilities may be the "fastest grep in the west". + GNU grep is based on a fast lazy-state deterministic matcher (about + twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper + search for a fixed string that eliminates impossible text from being + considered by the full regexp matcher without necessarily having to + look at every character. The result is typically many times faster + than Unix grep or egrep. (Regular expressions containing backreferencing + will run more slowly, however). + +=head1 BUGS + +The B<Build-Ids> field uses a rather generic name out of its original +context within an ELF object, which serves a very specific purpose and +executable format. + +=head1 SEE ALSO + +L<deb822(5)>, +L<deb-src-control(5)>, +L<deb(5)>, +L<deb-version(7)>, +L<debtags(1)>, +L<dpkg(1)>, +L<dpkg-deb(1)>. |