575 lines
18 KiB
Text
575 lines
18 KiB
Text
# dpkg manual page - deb-src-control(5)
|
||
#
|
||
# Copyright © 2010 Oxan van Leeuwen <oxan@oxanvanleeuwen.nl>
|
||
# Copyright © 2011 Raphaël Hertzog <hertzog@debian.org>
|
||
# Copyright © 2011-2024 Guillem Jover <guillem@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-src-control - Debian source package template control file format
|
||
|
||
=head1 SYNOPSIS
|
||
|
||
B<debian/control>
|
||
|
||
=head1 DESCRIPTION
|
||
|
||
Each Debian source package contains the «B<debian/control>» template source
|
||
control file,
|
||
and its L<deb822(5)> format is a superset of the B<control> file
|
||
shipped in Debian binary packages, see L<deb-control(5)>.
|
||
|
||
This file contains at least 2 stanzas, separated by a blank line.
|
||
The first stanza is called the source package stanza and lists all
|
||
information about the source package in general,
|
||
while each following stanzas are called the binary package stanzas and
|
||
describe exactly one binary package per stanza.
|
||
Each stanza consists of at least one field.
|
||
A field starts with a field name, such as B<Package> or B<Section>
|
||
(case insensitive), followed by a colon, the body of the field
|
||
(case sensitive unless stated otherwise) and a newline.
|
||
Multi-line fields are also allowed, but each supplementary line, without a
|
||
field name, must start with at least one space.
|
||
The content of the multi-line
|
||
fields is generally joined to a single line by the tools (except in the case of
|
||
the
|
||
B<Description>
|
||
field, see below).
|
||
To insert empty lines into a multi-line
|
||
field, insert a dot after the space.
|
||
Lines starting with a ‘B<#>’ are treated as comments.
|
||
|
||
=head1 SOURCE FIELDS
|
||
|
||
=over
|
||
|
||
=item B<Source:> I<source-package-name> (required)
|
||
|
||
The value of this field is the name of the source package,
|
||
and must match the name of the source package in the debian/changelog file.
|
||
A package
|
||
name must consist only of lowercase letters (a-z), digits (0-9), plus (+) and
|
||
minus (-) signs, and periods (.).
|
||
Package names must be at least two characters
|
||
long and must start with a lowercase alphanumeric character (a-z0-9).
|
||
|
||
=item B<Maintainer:> I<fullname-email> (recommended)
|
||
|
||
Should be in the format «Joe Bloggs E<lt>jbloggs@foo.comE<gt>», and references the
|
||
person who currently maintains the package, as opposed to the author of the
|
||
software or the original packager.
|
||
|
||
=item B<Uploaders:> I<fullname-email>
|
||
|
||
Lists all the names and email addresses of co-maintainers of the package, in
|
||
the same format as the B<Maintainer> field.
|
||
Multiple co-maintainers should be separated by a comma.
|
||
|
||
=item B<Standards-Version:> I<version-string>
|
||
|
||
This documents the most recent version of the distribution policy standards
|
||
this package complies with.
|
||
|
||
=item B<Description> I<short-description>
|
||
|
||
=item S< >I<long-description>
|
||
|
||
The format for the source 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<Homepage:> I<url>
|
||
|
||
The upstream project home page URL.
|
||
|
||
=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>.
|
||
This field is usually not needed.
|
||
|
||
=item B<Build-Driver:> I<driver-name>
|
||
|
||
This experimental field specifies the name of the build driver to use to
|
||
build this package.
|
||
When omitted the I<driver-name> defaults to B<debian-rules>.
|
||
|
||
This field is supported since dpkg 1.22.7.
|
||
|
||
=item B<Rules-Requires-Root:> B<no>|B<binary-targets>|I<impl-keywords>
|
||
|
||
This field is used to indicate whether the B<debian/rules> file requires
|
||
(fake)root privileges to run some of its targets, and if so when.
|
||
|
||
=over
|
||
|
||
=item B<no>
|
||
|
||
The binary targets will not require (fake)root at all.
|
||
This is the default in B<dpkg-build-api> level >= 1,
|
||
or since dpkg 1.22.13.
|
||
|
||
=item B<binary-targets>
|
||
|
||
The binary targets must always be run under (fake)root.
|
||
This value is the default in B<dpkg-build-api> level 0 until dpkg 1.22.13,
|
||
when the field is omitted;
|
||
adding the field with an explicit B<binary-targets>,
|
||
while not strictly needed,
|
||
marks it as having been analyzed for this requirement.
|
||
|
||
=item I<impl-keywords>
|
||
|
||
This is a space-separated list of keywords which define when (fake)root
|
||
is required.
|
||
|
||
Keywords consist of I<namespace>/I<cases>.
|
||
The I<namespace> part cannot contain "/" or whitespace.
|
||
The I<cases> part cannot contain whitespace.
|
||
Furthermore, both parts must consist entirely of printable ASCII characters.
|
||
|
||
Each tool/package will define a namespace named after itself and provide
|
||
a number of cases where (fake)root is required.
|
||
(See "Implementation provided keywords" in I<rootless-builds.txt>).
|
||
|
||
When the field is set to one of the I<impl-keywords>, the builder will
|
||
expose an interface that is used to run a command under (fake)root.
|
||
(See "Gain Root API" in I<rootless-builds.txt>.)
|
||
|
||
=back
|
||
|
||
=item B<Testsuite:> I<name-list>
|
||
|
||
=item B<Testsuite-Triggers:> I<package-list>
|
||
|
||
These fields are described in the
|
||
L<dsc(5)>
|
||
manual page, as they are generated from information inferred from
|
||
B<debian/tests/control> or copied literally to the source control file.
|
||
|
||
=item B<Vcs-Arch:> I<url>
|
||
|
||
=item B<Vcs-Bzr:> I<url>
|
||
|
||
=item B<Vcs-Cvs:> I<url>
|
||
|
||
=item B<Vcs-Darcs:> I<url>
|
||
|
||
=item B<Vcs-Git:> I<url>
|
||
|
||
=item B<Vcs-Hg:> I<url>
|
||
|
||
=item B<Vcs-Mtn:> I<url>
|
||
|
||
=item B<Vcs-Svn:> I<url>
|
||
|
||
The I<url> of the Version Control System repository used to maintain this
|
||
package.
|
||
Currently supported are B<Arch>, B<Bzr> (Bazaar), B<Cvs>,
|
||
B<Darcs>, B<Git>, B<Hg> (Mercurial), B<Mtn> (Monotone) and
|
||
B<Svn> (Subversion).
|
||
Usually this field points to the latest version
|
||
of the package, such as the main branch or the trunk.
|
||
|
||
=item B<Vcs-Browser:> I<url>
|
||
|
||
The I<url> of a web interface to browse the Version Control System
|
||
repository.
|
||
|
||
=item B<Origin:> I<name>
|
||
|
||
The name of the distribution this package is originating from.
|
||
This field is
|
||
usually not needed.
|
||
|
||
=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.
|
||
|
||
When omitted,
|
||
the I<section> defaults to B<unknown>
|
||
(since dpkg 1.22.13).
|
||
|
||
The accepted values are based on the specific distribution policy.
|
||
|
||
=item B<Priority:> I<priority>
|
||
|
||
Sets the importance of this package in relation to the system as a whole.
|
||
The known priorities are B<required>, B<important>, B<standard>, B<optional>,
|
||
B<extra>, and B<unknown>, but other values can be used as well.
|
||
|
||
When omitted,
|
||
the I<priority> defaults to B<optional>
|
||
(since dpkg 1.22.13).
|
||
|
||
How to apply these values depends on the specific distribution policy.
|
||
|
||
=item B<Build-Depends:> I<package-list>
|
||
|
||
A list of packages that need to be installed and configured to be able
|
||
to build from source package.
|
||
These dependencies need to be satisfied when building binary architecture
|
||
dependent or independent packages and source packages.
|
||
Including a dependency in this field does not have the exact same effect as
|
||
including it in both B<Build-Depends-Arch> and B<Build-Depends-Indep>,
|
||
because the dependency also needs to be satisfied when building the source
|
||
package.
|
||
|
||
=item B<Build-Depends-Arch:> I<package-list>
|
||
|
||
Same as B<Build-Depends>, but they are only needed when building the
|
||
architecture dependent packages.
|
||
The B<Build-Depends> are also installed in this case.
|
||
This field is supported since dpkg 1.16.4; in
|
||
order to build with older dpkg versions, B<Build-Depends>
|
||
should be used instead.
|
||
|
||
=item B<Build-Depends-Indep:> I<package-list>
|
||
|
||
Same as B<Build-Depends>, but they are only needed when building the
|
||
architecture independent packages.
|
||
The B<Build-Depends> are also
|
||
installed in this case.
|
||
|
||
=item B<Build-Conflicts:> I<package-list>
|
||
|
||
A list of packages that should not be installed when the package is
|
||
built, for example because they interfere with the build system used.
|
||
Including a dependency in this list has the same effect as including
|
||
it in both B<Build-Conflicts-Arch> and
|
||
B<Build-Conflicts-Indep>, with the additional effect of being
|
||
used for source-only builds.
|
||
|
||
=item B<Build-Conflicts-Arch:> I<package-list>
|
||
|
||
Same as B<Build-Conflicts>, but only when building the architecture
|
||
dependent packages.
|
||
This field is supported since dpkg 1.16.4; in
|
||
order to build with older dpkg versions, B<Build-Conflicts> should
|
||
be used instead.
|
||
|
||
=item B<Build-Conflicts-Indep:> I<package-list>
|
||
|
||
Same as B<Build-Conflicts>, but only when building the architecture
|
||
independent packages.
|
||
|
||
=back
|
||
|
||
The syntax of the
|
||
B<Build-Depends>,
|
||
B<Build-Depends-Arch>
|
||
and
|
||
B<Build-Depends-Indep>
|
||
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 ‘B<,>’, and can end with a
|
||
trailing comma that will be eliminated when generating the fields
|
||
for L<deb-control(5)> (since dpkg 1.10.14).
|
||
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
|
||
‘B<(>’ and ‘B<)>’, an
|
||
architecture specification in square brackets ‘B<[>’ and ‘B<]>’,
|
||
and a restriction formula
|
||
consisting of one or more lists of profile names in angle brackets
|
||
‘B<E<lt>>’ and ‘B<E<gt>>’.
|
||
|
||
The syntax of the
|
||
B<Build-Conflicts>,
|
||
B<Build-Conflicts-Arch>
|
||
and
|
||
B<Build-Conflicts-Indep>
|
||
fields is a list of comma-separated package names, where the comma is read
|
||
as an “AND”, and where the list can end with a trailing comma that will
|
||
be eliminated when generating the fields for L<deb-control(5)>
|
||
(since dpkg 1.10.14).
|
||
Specifying alternative packages using a “pipe” is not supported.
|
||
Each package name is optionally followed by a version number specification in
|
||
parentheses, an architecture specification in square brackets, and a
|
||
restriction formula consisting of one or more lists of profile names in
|
||
angle brackets.
|
||
|
||
An architecture qualifier name can be a real Debian architecture name
|
||
(since dpkg 1.16.5), B<any> (since dpkg 1.16.2) or B<native>
|
||
(since dpkg 1.16.5).
|
||
If omitted, the default for B<Build-Depends> fields is the current host
|
||
architecture, the default for B<Build-Conflicts> fields is B<any>.
|
||
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 is marked with B<Multi-Arch: allowed>, and
|
||
B<native> will match the current build architecture if the package
|
||
is not marked with B<Multi-Arch: foreign>.
|
||
|
||
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.
|
||
|
||
An architecture specification consists of one or more architecture names,
|
||
separated by whitespace.
|
||
Exclamation marks may be prepended to each of the
|
||
names, meaning “NOT”.
|
||
|
||
A restriction formula consists of one or more restriction lists, separated
|
||
by whitespace.
|
||
Each restriction list is enclosed in angle brackets.
|
||
Items
|
||
in the restriction list are build profile names, separated by whitespace
|
||
and can be prefixed with an exclamation mark, meaning “NOT”.
|
||
A restriction formula represents a disjunctive normal form expression.
|
||
|
||
Note that dependencies on packages in the
|
||
B<build-essential>
|
||
set can be omitted and that declaring build conflicts against them is
|
||
impossible.
|
||
A list of these packages is in the build-essential package.
|
||
|
||
=head1 BINARY FIELDS
|
||
|
||
Note that the
|
||
B<Priority>, B<Section>
|
||
and
|
||
B<Homepage>
|
||
fields can also be in a binary stanza to override the global value from the
|
||
source package.
|
||
|
||
=over
|
||
|
||
=item B<Package:> I<binary-package-name> (required)
|
||
|
||
This field is used to name the binary package name.
|
||
The same restrictions as
|
||
to a source package name apply.
|
||
|
||
=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<Architecture:> I<arch>|B<all>|B<any> (required)
|
||
|
||
The architecture specifies on which type of hardware this package runs.
|
||
For
|
||
packages that run on all architectures, use the
|
||
B<any>
|
||
value.
|
||
For packages that are architecture independent, such as shell and Perl
|
||
scripts or documentation, use the
|
||
B<all>
|
||
value.
|
||
To restrict the packages to a certain set of architectures, specify the
|
||
architecture names, separated by a space.
|
||
It's also possible to put
|
||
architecture wildcards in that list (see
|
||
L<dpkg-architecture(1)>
|
||
for more information about them).
|
||
|
||
=item B<Build-Profiles:> I<restriction-formula>
|
||
|
||
This field specifies the conditions for which this binary package does or
|
||
does not build.
|
||
To express that condition, the same restriction formula syntax from the
|
||
B<Build-Depends> field is used (including the angle brackets).
|
||
|
||
If a binary package stanza does not contain this field, then it implicitly
|
||
means that it builds with all build profiles (including none at all).
|
||
|
||
In other words, if a binary package stanza is annotated with a non-empty
|
||
B<Build-Profiles> field, then this binary package is generated if and
|
||
only if the condition expressed by the conjunctive normal form expression
|
||
evaluates to true.
|
||
|
||
=item B<Protected:> B<yes>|B<no>
|
||
|
||
=item B<Essential:> B<yes>|B<no>
|
||
|
||
=item B<Build-Essential:> B<yes>|B<no>
|
||
|
||
=item B<Multi-Arch:> B<same>|B<foreign>|B<allowed>|B<no>
|
||
|
||
=item B<Tag:> I<tag-list>
|
||
|
||
=item B<Description:> I<short-description> (recommended)
|
||
|
||
These fields are described in the
|
||
L<deb-control(5)>
|
||
manual page, as they are copied literally to the control file of the binary
|
||
package.
|
||
|
||
=item B<Depends:> I<package-list>
|
||
|
||
=item B<Pre-Depends:> I<package-list>
|
||
|
||
=item B<Recommends:> I<package-list>
|
||
|
||
=item B<Suggests:> I<package-list>
|
||
|
||
=item B<Breaks:> I<package-list>
|
||
|
||
=item B<Enhances:> I<package-list>
|
||
|
||
=item B<Replaces:> I<package-list>
|
||
|
||
=item B<Conflicts:> I<package-list>
|
||
|
||
=item B<Provides:> I<package-list>
|
||
|
||
=item B<Built-Using:> I<package-list>
|
||
|
||
=item B<Static-Built-Using:> I<package-list>
|
||
|
||
These fields declare relationships between packages.
|
||
They are discussed in
|
||
the
|
||
L<deb-control(5)>
|
||
manual page.
|
||
When these fields are found in I<debian/control> they can also end with
|
||
a trailing comma (since dpkg 1.10.14), have architecture specifications and
|
||
restriction formulas which will all get reduced when generating the fields
|
||
for L<deb-control(5)>.
|
||
|
||
=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 in B<udeb>s 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>.
|
||
|
||
=back
|
||
|
||
=head1 USER-DEFINED FIELDS
|
||
|
||
It is allowed to add additional user-defined fields to the control file.
|
||
The tools will ignore these fields.
|
||
If you want the fields to be copied over to
|
||
the output files, such as the binary packages, you need to use a custom naming
|
||
scheme: the fields should start with an B<X>, followed by zero or more of
|
||
the letters B<SBC> and a hyphen.
|
||
|
||
=over
|
||
|
||
=item B<S>
|
||
|
||
The field will appear in the source package control file, see L<dsc(5)>.
|
||
|
||
=item B<B>
|
||
|
||
The field will appear in the control file in the binary package, see
|
||
L<deb-control(5)>.
|
||
|
||
=item B<C>
|
||
|
||
The field will appear in the upload control (.changes) file, see
|
||
L<deb-changes(5)>.
|
||
|
||
=back
|
||
|
||
Note that the B<X>[B<SBC>]B<-> prefixes are stripped when the
|
||
fields are copied over to the output files.
|
||
A field B<XC-Approved-By>
|
||
will appear as B<Approved-By> in the changes file and will not appear
|
||
in the binary or source package control files.
|
||
|
||
Take into account that these user-defined fields will be using the global
|
||
namespace, which might at some point in the future collide with officially
|
||
recognized fields.
|
||
To avoid such potential situation you can prefix those
|
||
fields with B<Private->, such as B<XB-Private-New-Field>.
|
||
|
||
=head1 EXAMPLE
|
||
|
||
# Comment
|
||
Source: dpkg
|
||
Section: admin
|
||
Priority: required
|
||
Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
|
||
# This field is copied to the binary and source packages.
|
||
XBS-Upstream-Release-Status: stable
|
||
Homepage: https://wiki.debian.org/Teams/Dpkg
|
||
Vcs-Browser: https://git.dpkg.org/cgit/dpkg/dpkg.git
|
||
Vcs-Git: https://git.dpkg.org/git/dpkg/dpkg.git
|
||
Standards-Version: 4.7.0
|
||
Build-Depends:
|
||
debhelper-compat (= 13),
|
||
debhelper (>= 13.10~),
|
||
pkgconf,
|
||
libselinux1-dev (>= 1.28-4) [!linux-any],
|
||
|
||
Package: dpkg-dev
|
||
Section: utils
|
||
Priority: optional
|
||
Architecture: all
|
||
# This is a custom field in the binary package.
|
||
XB-Mentoring-Contact: Raphael Hertzog <hertzog@debian.org>
|
||
Depends:
|
||
binutils,
|
||
bzip2,
|
||
cpio (>= 2.4.2-2),
|
||
# This is a comment in the middle of a field value.
|
||
dpkg (>= 1.14.6),
|
||
libtimedate-perl,
|
||
lzma,
|
||
make,
|
||
patch (>= 2.2-1),
|
||
perl-modules,
|
||
perl5,
|
||
Recommends:
|
||
gcc | c-compiler,
|
||
build-essential,
|
||
Suggests:
|
||
gnupg,
|
||
debian-keyring,
|
||
Conflicts:
|
||
dpkg-cross (<< 2.0.0),
|
||
devscripts (<< 2.10.26),
|
||
Replaces:
|
||
manpages-pl (<= 20051117-1),
|
||
Description: Debian package development tools
|
||
This package provides the development tools (including dpkg-source)
|
||
required to unpack, build and upload Debian source packages.
|
||
.
|
||
Most Debian source packages will require additional tools to build;
|
||
for example, most packages need make and the C compiler gcc.
|
||
|
||
=head1 SEE ALSO
|
||
|
||
I<%PKGDOCDIR%/spec/rootless-builds.txt>,
|
||
L<deb822(5)>,
|
||
L<deb-control(5)>,
|
||
L<deb-version(7)>,
|
||
L<dpkg-source(1)>
|