Provided by: dpkg-dev_1.18.4ubuntu1.7_all bug


       deb-control - Debian packages' master control file format




       Each  Debian  package contains the master control file, which contains a number of fields,
       or comments when the line starts with ‘#’.  Each field begins with a tag, such as  Package
       or Version (case insensitive), followed by a colon, and the body of the field.  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 Description field, see below).


       Package: package-name (required)
              The value of this field determines the package name, and is used to  generate  file
              names by most installation tools.

       Version: 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 deb-version(5).

       Maintainer: fullname-email (required)
              Should be in the format “Joe Bloggs <>”, and is typically the person
              who created the package, as  opposed  to  the  author  of  the  software  that  was

       Description: short-description (required)
              The  format  for the package description is a short brief summary on the first line
              (after the 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 ‘.’  following
              the preceding space.

       Section: section
              This  is  a  general  field that gives the package a category based on the software
              that it installs.  Some common sections are utils, net, mail, text, x11, etc.

       Priority: priority
              Sets the importance of this package in relation to the system as a  whole.   Common
              priorities are required, standard, optional, extra, etc.

       In  Debian, the Section and Priority fields have a defined set of accepted values based on
       the Policy Manual.  A list of these values can be obtained from the latest version of  the
       debian-policy package.

       Essential: yes|no
              This field is usually only needed when the answer is yes. It denotes a package that
              is required for proper operation of the system. Dpkg or any other installation tool
              will  not  allow an Essential package to be removed (at least not without using one
              of the force options).

       Build-Essential: yes|no
              This field is usually only needed when the answer is yes, and is commonly  injected
              by the archive software.  It denotes a package that is required when building other

       Architecture: arch|all
              The architecture specifies which type of hardware this package  was  compiled  for.
              Common  architectures  are  amd64,  armel,  i386,  powerpc, etc.  Note that the all
              option is meant for packages that are architecture independent.  Some  examples  of
              this are shell and Perl scripts, and documentation.

       Origin: name
              The name of the distribution this package is originating from.

       Bugs: url
              The  url  of  the  bug tracking system for this package. The current used format is
              bts-type://bts-address, like debbugs://

       Homepage: url
              The upstream project home page url.

       Tag: tag-list
              List of tags describing the qualities of the package. The description and  list  of
              supported tags can be found in the debtags package.

       Multi-Arch: same|foreign|allowed|no
              This  field  is  used  to  indicate  how this package should behave on a multi-arch
              installations. The value same means that the 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.  The value foreign means that  the  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  foreign is ignored).  The value allowed
              allows reverse-dependencies to indicate in their Depends field that they  accept  a
              package  from  a foreign architecture by qualifying the package name with :any, but
              has no effect otherwise.  The value no is the default when the field is omitted, in
              which case adding the field with an explicit no value is generally not needed.

       Source: source-name
              The  name  of  the  source package that this binary package came from, if different
              than the name of the package itself.

       Subarchitecture: value
       Kernel-Version: value
       Installer-Menu-Item: value
              These fields are used by the debian-installer and  are  usually  not  needed.   See
              /usr/share/doc/debian-installer/devel/modules.txt from the debian-installer package
              for more details about them.

       Depends: 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 Depends field aren't  installed  (at  least
              not  without using the force options).  In an installation, the postinst scripts of
              packages listed in 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 Depends field.

       Pre-Depends: package-list
              List of packages that must be installed 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.

       Recommends: 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 Recommends field.

       Suggests: 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.

       The  syntax of Depends, Pre-Depends, Recommends and Suggests fields is a list of groups of
       alternative packages. Each group is a list of  packages  separated  by  vertical  bar  (or
       “pipe”)  symbols,  ‘|’.   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 ‘:’, 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  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,  any will match any architecture for that package name if the package
       has been marked as Multi-Arch: allowed.

       A version number may start with a ‘>>’, 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 ‘>>’ for greater than, ‘<<’ for less than, ‘>=’ for greater than
       or equal to, ‘<=’ for less than or equal to, and ‘=’ for equal to.

       Breaks: 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 Breaks field.

       Conflicts: 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 Conflicts line mentioning the other.

       Replaces: 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
              Conflicts  field  to  force  removal of the other package, if this one also has the
              same files as the conflicted package.

       The syntax of Breaks, Conflicts and Replaces is a list  of  package  names,  separated  by
       commas (and optional whitespace).  In the Breaks and 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 any instead of the binary package
       architecture.  An optional version can also be given with the same syntax as above for the
       Breaks, Conflicts and Replaces fields.

       Provides: 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 ‘|’ to separate the list.

       The  syntax  of  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).

       Built-Using: package-list
              This  field  lists  extra  source  packages that were used during the build of this
              binary package.  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  list  of  source  package  names  with  strict  ‘=’  version
              relationships.   Note  that the archive maintenance software is likely to refuse to
              accept an  upload  which  declares  a  Built-Using  relationship  which  cannot  be
              satisfied within the archive.


       # Comment
       Package: grep
       Essential: yes
       Priority: required
       Section: base
       Maintainer: Wichert Akkerman <>
       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).


       deb(5), deb-version(5), debtags(1), dpkg(1), dpkg-deb(1).