(debian-policy.info)Package relationships


Next: Changes to the upstream sources Prev: Standards conformance Up: Source packages
Enter node , (file) or (file)node

4.2 Package relationships
=========================

Source packages should specify which binary packages they require to be
installed or not to be installed in order to build correctly.  For
example, if building a package requires a certain compiler, then the
compiler should be specified as a build-time dependency.

It is not necessary to explicitly specify build-time relationships on a
minimal set of packages that are always needed to compile, link and put
in a Debian package a standard “Hello World!” program written in C or
C++.  The required packages are called `build-essential', and an
informational list can be found in ‘/usr/share/doc/build-essential/list’
(which is contained in the ‘build-essential’ package).  (1)

When specifying the set of build-time dependencies, one should list only
those packages explicitly required by the build.  It is not necessary to
list packages which are required merely because some other package in
the list of build-time dependencies depends on them.  (2)

If build-time dependencies are specified, it must be possible to build
the package and produce working binaries on a system with only essential
and build-essential packages installed and also those required to
satisfy the build-time relationships (including any implied
relationships).  In particular, this means that version clauses should
be used rigorously in build-time relationships so that one cannot
produce bad or inconsistently configured packages when the relationships
are properly satisfied.

Note: Declaring relationships between packages. explains the
technical details.

   ---------- Footnotes ----------

   (1) Rationale:

   - This allows maintaining the list separately from the policy
     documents (the list does not need the kind of control that the
     policy documents do).

   - Having a separate package allows one to install the build-essential
     packages on a machine, as well as allowing other packages such as
     tasks to require installation of the build-essential packages using
     the depends relation.

   - The separate package allows bug reports against the list to be
     categorized separately from the policy management process in the
     BTS.

   (2) The reason for this is that dependencies change, and you should
list all those packages, and `only' those packages that `you' need
directly.  What others need is their business.  For example, if you only
link against ‘libimlib’, you will need to build-depend on libimlib2-dev
but not against any ‘libjpeg*’ packages, even though ‘libimlib2-dev’
currently depends on them: installation of libimlib2-dev will
automatically ensure that all of its run-time dependencies are
satisfied.


automatically generated by info2www version 1.2.2.9