At 2025-04-20T23:22:04+0500, Andrey Rakhmatullin wrote:
On Sun, Apr 20, 2025 at 06:25:53PM +0100, Josh Triplett wrote:
What I'm suggesting here is that if every individual package that
needs awk has a Depends on it (via a package that allows switching implementations), rather than relying on Essential, then it becomes possible to make incremental progress, and that incremental progress benefits people who are willing to carefully remove some of what
Debian normally always has installed packages.
Should we start declaring deps on all essential packages explicitly?
I think that's a good idea. "Explicit is better than implicit," as the
Zen of Python puts it.[1]
Factual statements about one's run-time dependencies should be as
decoupled from the details of the set of "Essential" packages as
possible. One reason is that the identities of the people making these decisions are disjoint. Often a package maintainer lacks this power;
except for dependencies they introduce through operation of their
maintainer scripts (or Debian add-ons), such run-time dependencies are
beyond their control.
...
Regards,
Branden
...
At 2025-04-20T23:22:04+0500, Andrey Rakhmatullin wrote:
On Sun, Apr 20, 2025 at 06:25:53PM +0100, Josh Triplett wrote:
What I'm suggesting here is that if every individual package that
needs awk has a Depends on it (via a package that allows switching implementations), rather than relying on Essential, then it becomes possible to make incremental progress, and that incremental progress benefits people who are willing to carefully remove some of what
Debian normally always has installed packages.
Should we start declaring deps on all essential packages explicitly?
I think that's a good idea. "Explicit is better than implicit," as the
Zen of Python puts it.[1]
Factual statements about one's run-time dependencies should be as[...]
decoupled from the details of the set of "Essential" packages as
possible.
By contrast, the population of the Essential set is up to...well, I'm
not sure who. Some vaguely defined intersection of the dpkg
maintainer(s), the release managers, and installer team, I guess.
In principle, the all of the developers collectively (and interested discussants) are responsible for such decisions. Unfortunately,
decisions in Debian are sometimes not made by those whom we claim.
"You must not tag any packages essential before this has been discussed
on the debian-devel mailing list and a consensus about doing that has
been reached." -- Debian Policy Manual, 3.8[2]
That implies to me that a package can be taken _out_ of the essential
set unilaterally by the package maintainer(s) of a package that's in it,
but because of the status quo of being able to depend on an essential
package without declaring that fact, in practice that probably wouldn't
work well, and we should update the Policy Manual to require discussion
of the dropping of such a "tag" as well.
Hi Adrian,
At 2025-04-21T01:34:56+0300, Adrian Bunk wrote:
...
My impression from watching countless upgrades over the years is that,
when any Essential package is available for upgrade, upgrades performed
by apt launch a full, discrete run of dpkg for each.[3] So the only way
any such cycles could exist is if the Pre-Depends were versioned and the versionings themselves produced the cycle, in which case there likely
_really is_ a breakage problem: one package or the other needs to delay
its aggressive employment of a newly available feature.
And then there's the normal time-waste like "the package ships
a bash-completion file that uses awk, grep, sed and sort - that's dependencies on four essential packages".
Hmm. In my opinion bash-completion scripts should produce "Recommends"-strength dependencies at most; not everybody's going to be
using bash as their interactive shell, and completion matters only for interactive shells.
That said, I haven't looked but would not be surprised if
bash-completion scripts make extremely aggressive assumptions about
what's available on the system. That is, they seldom if ever look
before the leap, and happily assume the presence of plenty of things
that _aren't_ in Essential, or even "Priority: required" packages.
But that's just a hunch. I could be wrong.
Regards,
Branden
...
On Sun, Apr 20, 2025 at 04:46:52PM -0500, G. Branden Robinson wrote:
Factual statements about one's run-time dependencies should be as
decoupled from the details of the set of "Essential" packages as
possible. One reason is that the identities of the people making these
decisions are disjoint. Often a package maintainer lacks this power;
except for dependencies they introduce through operation of their
maintainer scripts (or Debian add-ons), such run-time dependencies are
beyond their control.
...
While this might sound good in theory, in practice it would be horrible.
As an example, libc6 has a preinst script that calls dpkg, sed,
grep and rm.
Making these dependencies explicit would be something like
Pre-Depends: sh, dpkg, sed, grep, coreutils
I would expect that such Pre-Depends cycles between essential packages
and libc6 will result in broken systems during upgrades.
And then there's the normal time-waste like "the package ships
a bash-completion file that uses awk, grep, sed and sort - that's >dependencies on four essential packages".
While this might sound good in theory, in practice it would be
horrible.
As an example, libc6
On Sun, Apr 20, 2025 at 06:25:53PM +0100, Josh Triplett wrote:
What I'm suggesting here is that if every individual package that
needs awk has a Depends on it (via a package that allows switching implementations), rather than relying on Essential, then it becomes possible to make incremental progress, and that incremental progress benefits people who are willing to carefully remove some of what
Debian normally always has installed packages.
Should we start declaring deps on all essential packages explicitly?
On Sun, Apr 20, 2025 at 04:46:52PM -0500, G. Branden Robinson wrote:
Factual statements about one's run-time dependencies should be as
decoupled from the details of the set of "Essential" packages as
possible. One reason is that the identities of the people making
these decisions are disjoint. Often a package maintainer lacks this
power; except for dependencies they introduce through operation of
their maintainer scripts (or Debian add-ons), such run-time
dependencies are beyond their control.
...
While this might sound good in theory, in practice it would be
horrible.
As an example, libc6 has a preinst script that calls dpkg, sed,
grep and rm.
Making these dependencies explicit would be something like
Pre-Depends: sh, dpkg, sed, grep, coreutils
I would expect that such Pre-Depends cycles between essential packages
and libc6 will result in broken systems during upgrades.
And then there's the normal time-waste like "the package ships
a bash-completion file that uses awk, grep, sed and sort - that's dependencies on four essential packages".
G. Branden Robinson wrote:
"You must not tag any packages essential before this has been
discussed on the debian-devel mailing list and a consensus about
doing that has been reached." -- Debian Policy Manual, 3.8[2]
That implies to me that a package can be taken _out_ of the
essential set unilaterally by the package maintainer(s) of a package
that's in it, but because of the status quo of being able to depend
on an essential package without declaring that fact, in practice
that probably wouldn't work well, and we should update the Policy
Manual to require discussion of the dropping of such a "tag" as
well.
I think that's a bug in Policy as written, rather than a bug in
practice. Historical practice has definitely been to discuss such
removals (extensively).
We should have a well-defined process for this, that includes
discussion transition plans (involving the introduction of Depends as
needed first), and similar.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 04:11:27 |
Calls: | 10,386 |
Calls today: | 1 |
Files: | 14,057 |
Messages: | 6,416,605 |