| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
- <refentry id="deb-control.5">
- <refmeta>
- <refentrytitle>deb-control</refentrytitle>
- <manvolnum>5</manvolnum>
- <refmiscinfo class="source">Debian Project</refmiscinfo>
- <refmiscinfo class="manual">dpkg utilities</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>deb-control</refname>
- <refpurpose>Debian packages' master control file format</refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <synopsis><filename>control</filename></synopsis>
- </refsynopsisdiv>
- <refsect1>
- <title>Description</title>
- <para>
- Each Debian package contains the master <filename>control</filename>
- file, which contains a number of fields. Each field begins with a tag,
- such as <emphasis>Package</emphasis> or <emphasis>Version</emphasis>
- (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 <emphasis>Description</emphasis> field, see below).
- </para>
- </refsect1>
- <refsect1>
- <title>Required Fields</title>
- <variablelist>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Package: <replaceable>package_name</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- The value of this field determines the package name, and is used to
- generate file names by most installation tools.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Version: <replaceable>version_string</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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). If both version
- and revision are supplied, they are seperated by a hyphen
- (<keycap>-</keycap>. For this reason, the original version may not
- have a hyphen in its version number.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Maintainer: <replaceable>fullname</replaceable> <replaceable>email</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- Should be in the format `Joe Bloggs <jbloggs@foo.com>', and
- is typically the person who created the package, as opposed to the
- author of the software that was packaged.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Description: <replaceable>short description</replaceable><sbr> <replaceable>long description</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- The format for the package description is a short brief summary on
- the first line (after the "Description" field). The following lines
- can 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 desription must contain a single '.' following the
- preceding space.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Optional Fields</title>
- <variablelist>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Section: <replaceable>section</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Priority: <replaceable>priority</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- Sets the importance of this package in relation to the system as a
- whole. Common priorities are `required', `standard', `optional',
- `extra' etc.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>
- In Debian, the <emphasis>Section</emphasis> and
- <emphasis>Priority</emphasis> fields have a defined set of accepted
- values based on the Policy Manual. They are used to decide how the
- packages are layed out in the archive. A list of these can be
- obtained from the latest version of
- <emphasis>debian-policy</emphasis> package.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Essential:
- <group choice="req">
- <arg>yes</arg>
- <arg>no</arg>
- </group>
- </arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- This field is usually only needed when the answer is `yes'. It
- denotes a package that is required for proper operation of the
- system. <command>dpkg</command> or any other installation tool will
- not allow an <emphasis>Essential</emphasis> package to be removed
- (at least not without using one of the force options).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Architecture:
- <group choice="req">
- <arg><arch></arg>
- <arg>all</arg>
- </group>
- </arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- The architecture specifies which type of hardware this package was
- compiled for. Common architectures are `i386', `m68k', `sparc',
- `alpha', `powerpc' etc. Note that the <emphasis>all</emphasis>
- option is meant for packages that are architecture independent.
- Some examples of this are shell or python scripts, or
- documentation.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain">Source: <replaceable>source_name</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- The name of the source package that this binary package came from,
- if different than the name of the package itself.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Depends: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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 <emphasis>Depends</emphasis> field are not installed
- (at least not without using the force options), and will run the
- postinst scripts of packages listed in Depends: fields before those
- of the packages which depend on them, and run prerm scripts before.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Pre-Depends: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- List of packages that must be installed <emphasis>and</emphasis>
- 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.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Recommends: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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
- <emphasis>Recommends</emphasis> field.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Suggests: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- Lists packages that are related to this one and can perhaps enhance
- its usefulness, but without which installing this package is
- perfectly reasonable.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>
- The syntax of <emphasis>Depends</emphasis>,
- <emphasis>Pre-Depends</emphasis>, <emphasis>Recommends</emphasis> and
- <emphasis>Suggests</emphasis> fields is a list of groups of alternative
- packages. Each group is a list of packages separated by vertical bar (or
- <keysym>pipe</keysym>) symbols, `<keycode>|</keycode>'. The groups are
- separated by commas. Commas are to be read as `AND', and pipes as `OR',
- with pipes binding more tightly. Each item is a package name optionally
- followed by a version number specification in parentheses.
- </para>
- <para>
- 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.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Conflicts: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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
- <emphasis>Conflicts</emphasis> line mentioning the other.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Replaces: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- 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 <emphasis>Conflicts</emphasis> field
- to force removal of the other package, if this one also has the
- same files as the conflicted package.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <cmdsynopsis>
- <arg choice="plain" rep="repeat">Provides: <replaceable>package</replaceable></arg>
- </cmdsynopsis>
- </term>
- <listitem>
- <para>
- This is a list of virtual packages that this one provides. Usuaully
- this is used in the case of several packages all providing the same
- service. For example, sendmail and exim can 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 satisy 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.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>
- The syntax of <emphasis>Conflicts</emphasis>,
- <emphasis>Replaces</emphasis> and <emphasis>Provides</emphasis> is a list
- of package names, separated by commas (and optional whitespace). In the
- <emphasis>Conflicts</emphasis> field, the comma should be read as `OR'.
- An optional version can also be given with the same syntax as above for
- the <emphasis>Conflicts</emphasis> and <emphasis>Replaces</emphasis>
- fields.
- </para>
- </refsect1>
- <refsect1><title>Example</title>
- <literallayout>
- 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.)
- </literallayout>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <para>
- <citerefentry>
- <refentrytitle>deb</refentrytitle>
- <manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>dpkg</refentrytitle>
- <manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>dpkg-deb</refentrytitle>
- <manvolnum>1</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
- </refentry>
|