On Wed, 28 May 2025 at 10:33:26 +0200, Julian Andres Klode wrote:
gnupg Depends: gpg (>= 2.4.7-19) overlaps Depends: gpg (<< 2.4.7-19.1~)
- solutions: ['gpg=2.4.7-19']
- eliminated: [] ['gpg-from-sq=0.13.1-3']
Where gpg-from-sq would be considered a valid solution for the
<< depends as it provides 2.2.something, but not the greater
depends and apt may decide to upgrade gnupg by installing gpg-from-sq.
This seems like a good improvement. But:
A complete list of mergeable dependencies is attached.
I'm not sure this merging is helpful where the two dependencies are
virtual packages that happen to be provided by the same real package
(and others), especially in the presence of "|". For example:
gnome-remote-desktop Depends: systemd | systemd-tmpfiles overlaps Depends:
systemd | systemd-sysusers
- solutions: ['systemd=257.5-2', 'systemd=257.5-2']
- eliminated: ['systemd-standalone-tmpfiles=257.5-2']
['systemd-standalone-sysusers=257.5-2', 'opensysusers=0.7.3-4.1']
I believe the intention here was that using g-r-d with systemd is
preferred (by both upstream and Debian's GNOME team), but users of
non-default init systems can swap it out for another -tmpfiles
implementation and another -sysusers implementation, for example
systemd-standalone-tmpfiles and systemd-standalone-sysusers, with a
command like one of these:
apt install gnome-remote-desktop systemd-standalone-tmpfiles
systemd-standalone-sysusers
apt install gnome-remote-desktop sysv-rc
apt install gnome-remote-desktop systemd-
But does the new merging make this impossible, by eliminating the
alternatives and forcing the preferred version to be taken?
Perhaps disabling this merging when there is a "|" would be helpful? In
this situation the package's maintainer is specifically accepting the
possibility that a non-preferred alternative will be chosen.
Or perhaps this merging should be restricted to situations where the
package name being requested is the same, like the "gpg" in the
motivating example?
Similar situations:
libsphinxbase3t64 Depends on any implementation of the liblapack.so.3
ABI, and any implementation of the libblas.so.3 ABI, but the new code
doesn't allow them to come from separate binary packages:
libsphinxbase3t64 Depends: liblapack3 | liblapack.so.3 overlaps Depends:
libblas3 | libblas.so.3
- solutions: ['libopenblas0-serial=0.3.29+ds-3',
'libopenblas0-pthread=0.3.29+ds-3', 'libopenblas0-openmp=0.3.29+ds-
3']
- eliminated: ['liblapack3=3.12.1-2', 'liblapack3=3.12.1-2']
['libblas3=3.12.1-2', 'libblas3=3.12.1-2', 'libblis4-se
rial=1.1-2', 'libblis4-pthread=1.1-2', 'libblis4-openmp=1.1-2']
network-manager-applet Depends on any polkit agent implementation, and
Recommends any fdo Notifications implementation, but the new code
disregards solutions that aren't an integrated desktop environment that
happens to provide both sets of functionality from the same binary
package:
network-manager-applet Recommends: notification-daemon overlaps Depends:
policykit-1-gnome | polkit-1-auth-agent
- solutions: ['phosh=0.46.0-3', 'gnome-shell=48.1-1',
'gnome-flashback=3.56.0-1', 'cinnamon=6.4.10-1']
- eliminated: ['notification-daemon=3.20.0-5', 'xfce4-notifyd=0.9.7-2',
'python3-jarabe=0.121-1', 'plasma-workspace=4:6.3.4-1',
'notify-osd=0.9.35+20.04.20191129-2', 'mate-notification-daemon=1.26.1-1+b3',
'mako-notifier=1.10.0-1', 'lxqt-notificationd=2.1.1-1', 'lomiri=0.5.0-1',
'dunst=1.12.2-1', 'awesome=4.3-7+b2'] ['ukui-polkit=1.2.2.2-1.1+b1',
'polkit-kde-agent-1=4:6.3.4-1', 'mate-polkit=1.26.1-4+b1', 'lxpolkit=0.5.6-2',
'lxqt-policykit=2.1.0-1']
(In particular KDE Plasma users would prefer to have plasma-workspace as
their Notifications implementation and polkit-kde-agent-1 as their
polkit agent, both of which are part of a desktop environment that
integrates this functionality, even though KDE happens to have chosen to
implement them in different binary packages behind the scenes!)
smcv