From: Russ Allbery
- Sometimes, a package requires another package to be installed - and configured before it can be installed. In this + Sometimes, a package requires another package to be unpacked + and configured before it can be unpacked. In this case, you must specify a Pre-Depends entry for the package.
@@ -3653,7 +3653,7 @@ Checksums-Sha256:
Broadly speaking the
- For this reason packages in an installation run are usually - all unpacked first and all configured later; this gives - later versions of packages with dependencies on later - versions of other packages the opportunity to have their - dependencies satisfied. + Since Depends only places requirements on the + configuration step, packages in an installation run are usually + all unpacked first and all configured later. This makes it + easier to satisfy all dependencies when multiple packages are + being upgraded.
-- In case of circular dependencies, since installation or - removal order honoring the dependency order can't be - established, dependency loops are broken at some point - (based on rules below), and some packages may not be able to - rely on their dependencies being present when being - installed or removed, depending on which side of the break - of the circular dependency loop they happen to be on. If one - of the packages in the loop has no postinst script, then the - cycle will be broken at that package, so as to ensure that - all postinst scripts run with the dependencies properly - configured if this is possible. Otherwise the breaking point - is arbitrary. -
-
- The Depends field thus allows package maintainers
- to impose an order in which packages should be configured.
+ If there is a circular dependency among packages being installed
+ or removed, installation or removal order honoring the
+ dependency order is impossible, requiring the dependency loop be
+ broken at some point and the dependency requirements violated
+ for at least one package. Packages involved in circular
+ dependencies may not be able to rely on their dependencies being
+ configured when being configured or removed depending on which
+ side of the break of the circular dependency loop they happen to
+ be on. If one of the packages in the loop has no
+
@@ -4529,7 +4528,8 @@ Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any] This declares an absolute dependency. A package will not be configured unless all of the packages listed in its Depends field have been correctly - configured. + configured (unless there is a circular dependency as + described above).
@@ -4543,10 +4543,17 @@ Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
The Depends field should also be used if the
+ Pre-Depends are also required if the
+
@@ -4618,13 +4635,6 @@ Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any] installation would hamper the ability of the system to continue with any upgrade that might be in progress.
- -
- Pre-Depends are also required if the
-
When one binary package declares that it breaks another,
When one binary package declares a conflict with another
using a Conflicts field,
- If one package is to be installed, the other must be removed
- first. If the package being installed is marked as replacing
+ If one package is to be unpacked, the other must be removed
+ first. If the package being unpacked is marked as replacing
(see , but note that Breaks should
normally be used in this case) the one on the system, or the one
on the system is marked as deselected, or both packages are
@@ -4984,7 +4994,7 @@ Provides: mail-transport-agent
Conflicts: mail-transport-agent
Replaces: mail-transport-agent
- ensuring that only one MTA can be installed at any one
+ ensuring that only one MTA can be unpacked at any one
time. See for more information about this
example.
@@ -5203,7 +5213,7 @@ Replaces: mail-transport-agent
During install or upgrade, the preinst is called before
- the new files are installed, so calling "ldconfig" is
+ the new files are unpacked, so calling "ldconfig" is
pointless. The preinst of an existing package can also be
called if an upgrade fails. However, this happens during
the critical time when a shared libs may exist on-disk
@@ -5348,7 +5358,7 @@ Replaces: mail-transport-agent
) to ensure that the user only installs one
development version at a time (as different development versions are
likely to have the same header files in them, which would cause a
- filename clash if both were installed).
+ filename clash if both were unpacked).
@@ -9687,7 +9697,7 @@ END-INFO-DIR-ENTRY
The