Chapter 7. Declaring relationships between packages
When selecting which level of dependency to use you should consider how important the
depended on package is to the functionality of the one declaring the dependency. Some pack
ages are composed of components of varying degrees of importance. Such a package should
the package(s) which are required by the more important components. The
other components' requirements may be mentioned as Suggestions or Recommendations, as
appropriate to the components' relative importance.
7.3 Conflicting binary packages
When one binary package declares a conflict with another using a
refuse to allow them to be installed on the system at the same time.
If one package is to be installed, the other must be removed first if the package being installed
is marked as replacing (see `Overwriting files and replacing packages
' on the
facing page) the one on the system, or the one on the system is marked as deselected, or both
packages are marked
will automatically remove the package which
is causing the conflict, otherwise it will halt the installation of the new package with an error.
This mechanism is specifically designed to produce an error when the installed package is
, but the new package is not.
A package will not cause a conflict merely because its configuration files are still installed; it
must be at least half installed.
A special exception is made for packages which declare a conflict with their own package
name, or with a virtual package which they provide (see below): this does not prevent their
installation, and allows a package to conflict with others providing a replacement for it. You
use this feature when you want the package in question to be the only package providing some
entry should almost never have an earlier than version clause. This would
from upgrading or installing the package which declared such a conflict until
the upgrade or removal of the conflicted with package had been completed.
7.4 Virtual packages
As well as the names of actual ( concrete ) packages, the package relationship fields
Build Depends Indep
Build Conflicts Indep
tion virtual packages .
A virtual package is one which appears in the
control file field of another package.
The effect is as if the package(s) which provide a particular virtual package name had been
listed by name everywhere the virtual package name appears. (See also `Virtual packages' on
If there are both concrete and virtual packages of the same name, then the dependency may
be satisfied (or the conflict caused) by either the concrete package with the name in question