>> Your chroot is broken.  perl-base is marked as essential, so it can not
>> be missing:

I see - it's not missing in the policy sense - it's missing in my chroot.

The disconnect here is around what Essential: yes actually means in
terms of dependency declaration. The Debian policy manual 3.8 states,
"Packages may assume that functionality provided by essential packages
is always available without declaring explicit dependencies". So rather
than declaring the dep in DEBIAN/control, the Essential flag is the
dependency declaration. It's an implicit dep enforced at a different
level (ie policy level rather than package level).

It feels like a dependency gap because the failure is not obvious and
only surfaces at trigger time. But the answer to "why doesn't the
dependency graph pull in perl-base?" is that Essential packages are
intentionally excluded from the dependency graph because they are always
assumed to exist, i.e. Debian relies on additional tooling to fulfil the
Essential dependencies for all systems, rather than the individual
package metadata.

Since, mmdebstrap's custom variant explicitly opts out of the Essential
guarantee, it places the responsibility of specifying all packages on
the user. I did not realise the full extent of the concept of 'policy
level reliance on dependencies', but now I do.
--  Matt

Reply via email to