Essential binaries and Pre-Depends on libraries
essential binaries have to work also when the package is in an unpacked,
but not configured, state. For that reason, packages including essential
binaries use Pre-Depends on the shared libraries needed by those binaries.
However, from my reading of policy I get the impression that this still
leaves an open issue: the transitive dependencies.
Let's look at coreutils as an example. coreutils Pre-Depends on libacl1
(>= 2.2.51-8) and libc6 (>= 2.17). However libacl1 only has a Depends:
libc6 (>= 2.14).
What happens if libacl1 picks up a dependency on libc (>= 2.19)? I think
in this case the package manager might do the following on an upgrade:
- Unpack new libacl1.
- Unpack new coreutils.
-> The dependency of libacl1 on libc6 is not satisfied.
Binaries using libacl1 are broken.
- Unpack libc6.
-> coreutils is okay again.
Wouldn't libacl1 also need to use Pre-Depends in this case?