#1074633 qt6-base: upgrading libqt6core6t64 removes qpdfview and wireshark instead of upgrading them

#1074633#5
Date:
2024-07-02 10:56:53 UTC
From:
To:
If I want to upgrade libqt6core6t64, apt wants to remove qpdfview and
wireshark instead of upgrading them:

# apt install libqt6core6t64
The following packages were automatically installed and are no longer required:
  libnghttp3-3          libqt6sql6         libts0t64
  libqt6concurrent6t64  libqt6sql6-sqlite
Use 'apt autoremove' to remove them.

Upgrading:
  libpoppler-cpp0t64      libpoppler134       libwireshark17t64
  libpoppler-dev          libqt6core5compat6  libwiretap14t64
  libpoppler-glib8t64     libqt6core6t64      libwsutil15t64
  libpoppler-private-dev  libqt6sql6-sqlite   poppler-utils
  libpoppler-qt5-1t64     libwireshark-data   wireshark-common

Installing dependencies:
  libnghttp3-9  libqt6sql6

REMOVING:
  libpoppler-qt6-3t64       libqt6waylandeglclienthwintegration6
  libqt6dbus6t64            libqt6waylandeglcompositorhwintegration6
  libqt6gui6t64             libqt6widgets6t64
  libqt6multimedia6         libqt6wlshellintegration6
  libqt6network6t64         qpdfview
  libqt6opengl6t64          qpdfview-djvu-plugin
  libqt6printsupport6t64    qpdfview-pdf-poppler-plugin
  libqt6qml6                qpdfview-ps-plugin
  libqt6qmlmodels6          qpdfview-translations
  libqt6quick6              qt6-gtk-platformtheme
  libqt6sql6t64             qt6-qpa-plugins
  libqt6svg6                qt6-wayland
  libqt6waylandclient6      wireshark
  libqt6waylandcompositor6

Summary:
  Upgrading: 15, Installing: 2, Removing: 27, Not Upgrading: 97
  Download size: 21.6 MB / 25.9 MB
  Freed space: 60.1 MB

Continue? [Y/n] n
Abort.

This is unnecessary, as wireshark could be upgraded. This can be seen
by explicitly providing wireshark as to be upgraded:

# apt install libqt6core6t64 wireshark
The following package was automatically installed and is no longer required:
  libnghttp3-3
Use 'apt autoremove' to remove it.

Upgrading:
  libpoppler-cpp0t64        libqt6wlshellintegration6
  libpoppler-dev            libwireshark-data
  libpoppler-glib8t64       libwireshark17t64
  libpoppler-private-dev    libwiretap14t64
  libpoppler-qt5-1t64       libwsutil15t64
  libpoppler-qt6-3t64       poppler-utils
  libpoppler134             qpdfview
  libqt6core5compat6        qpdfview-djvu-plugin
  libqt6core6t64            qpdfview-pdf-poppler-plugin
  libqt6multimedia6         qpdfview-ps-plugin
  libqt6qml6                qt6-gtk-platformtheme
  libqt6qmlmodels6          qt6-qpa-plugins
  libqt6quick6              qt6-wayland
  libqt6sql6-sqlite         wireshark
  libqt6svg6                wireshark-common
  libqt6waylandclient6      wireshark-doc
  libqt6waylandcompositor6

Installing dependencies:
  libnghttp3-9  libqt6network6       libqt6sql6
  libqt6dbus6   libqt6opengl6        libqt6widgets6
  libqt6gui6    libqt6printsupport6  libxcb-cursor0

REMOVING:
  libqt6dbus6t64          libqt6sql6t64
  libqt6gui6t64           libqt6waylandeglclienthwintegration6
  libqt6network6t64       libqt6waylandeglcompositorhwintegration6
  libqt6opengl6t64        libqt6widgets6t64
  libqt6printsupport6t64

Summary:
  Upgrading: 33, Installing: 9, Removing: 9, Not Upgrading: 96
  Download size: 37.0 MB / 53.9 MB
  Space needed: 3012 kB / 150 GB available

Continue? [Y/n] n
Abort.

#1074633#10
Date:
2024-07-02 22:30:55 UTC
From:
To:
Hi Vincent,

this seems more a problem of apt than of Qt.

For some reason, apt is not able to resolve the dependencies when you
only want to upgrade libqt6core6t64, but is able to do so when you want
to upgrade libqt6core6t64 and wireshark.

To me, that means that the dependencies in Qt are correct (that it wants
to replace some libqt6...t64 packages with non-t64 versions is the
correct solution).

Have you tried upgrading just libqt6core6t64 with aptitude ?

I'm inclined to reassign this bug to apt as the dependencies can clearly
be resolved and IMO this is down to the resolver.

#1074633#15
Date:
2024-07-02 23:02:28 UTC
From:
To:
Hi Patrick,

Even if apt could be improved, this would still be a bug in the
concerned packages, which must declare adequate relationships
to allow the upgrade. See

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1059068#15

where David Kalnischkies says

  You should really know this by now as that isn't your first report,
  but okay: Upgrade problems are NEVER a problem to be solved in apt,
  they are ALWAYS a problem in the involved packages. NO EXCEPTIONS.

See above. It seems that the issue is that the upgrade of
libqt6core6t64 alone seems to remove other Qt packages instead
of upgrading them.

In particular, "apt install libqt6core6t64" wants to remove
qt6-wayland, but if I try "apt install libqt6core6t64 qt6-wayland",
then the upgrade is fine. So there seems to be really something
wrong with the Qt package relationships.

aptitude doesn't want to do anything. aptitude is often much worse
(but much safer as it will normally not break "Recommends" without
confirmation). And sometimes it can't even handle simple cases,
where it has only some dependencies to install.

#1074633#20
Date:
2024-07-03 10:33:37 UTC
From:
To:
Note that as noted in its changelog, there was a regression in
apt 2.9.5. However, apt 2.9.6 yields the same behavior. And to
be sure that there wasn't any other regression, I downgraded apt
to stable and installed libapt-pkg6.0 from stable (replacing the
libapt-pkg6.0t64 package from the t64 transition):

  apt install apt/stable libapt-pkg6.0/stable

(this also removed non-important packages for the test), i.e.
version 2.6.1, and there was still the same behavior:

zira:~> apt install libqt6core6t64 -s
NOTE: This is only a simulation!
      apt needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
[...]
The following additional packages will be installed:
  libnghttp3-9 libpoppler-cpp0t64 libpoppler-dev libpoppler-glib8t64
  libpoppler-private-dev libpoppler-qt5-1t64 libpoppler134 libqt6core5compat6
  libqt6sql6 libqt6sql6-sqlite libwireshark-data libwireshark17t64
  libwiretap14t64 libwsutil15t64 poppler-utils wireshark-common
Suggested packages:
  geoipupdate geoip-database-extra libjs-leaflet libjs-leaflet.markercluster
  snmp-mibs-downloader wireshark-doc
Recommended packages:
  wireshark | tshark
The following packages will be REMOVED:
  libpoppler-qt6-3t64 libqt6dbus6t64 libqt6gui6t64 libqt6multimedia6
  libqt6network6t64 libqt6opengl6t64 libqt6printsupport6t64 libqt6qml6
  libqt6qmlmodels6 libqt6quick6 libqt6sql6t64 libqt6svg6 libqt6waylandclient6
  libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6
  libqt6waylandeglcompositorhwintegration6 libqt6widgets6t64
  libqt6wlshellintegration6 qpdfview qpdfview-djvu-plugin
  qpdfview-pdf-poppler-plugin qpdfview-ps-plugin qpdfview-translations
  qt6-gtk-platformtheme qt6-qpa-plugins qt6-wayland wireshark
The following NEW packages will be installed:
  libnghttp3-9 libqt6sql6
The following packages will be upgraded:
  libpoppler-cpp0t64 libpoppler-dev libpoppler-glib8t64 libpoppler-private-dev
  libpoppler-qt5-1t64 libpoppler134 libqt6core5compat6 libqt6core6t64
  libqt6sql6-sqlite libwireshark-data libwireshark17t64 libwiretap14t64
  libwsutil15t64 poppler-utils wireshark-common
[...]

thus removing qpdfview and wireshark.

#1074633#25
Date:
2024-07-03 10:57:49 UTC
From:
To:
In case this can be useful, I've attached the output of

  apt-get install libqt6core6t64 -s -o Debug::pkgProblemResolver=true

#1074633#30
Date:
2024-07-03 17:13:37 UTC
From:
To:
Hej Vincent,

Am Mittwoch, 3. Juli 2024, 01:02:28 CEST schrieb Vincent Lefevre:
[...]

The dependencies of Qt are fine, you just ended up in an unfortunate
situation that makes it look as if the dependencies in Qt are wrong.

The upgrade from Qt 6.4 to 6.6 involves a number of Break+Replaces, but
that doesn't mean anything is wrong.

In your first example, you only wanted to upgrade libqt6core6t64. The
thing here is that there are multiple solutions about what to do with
the reverse dependencies. Some solutions remove a lot of them and
install as little as possible, others replace a bunch of libs and remove
fewer packages.
You asked apt to upgrade libqt6core6t64 and that is exactly what apt
did. The issue is that the proposed solution is correct, but it's just
not your preferred one.
In your second example, removing all those libraries without replacing
them is not a viable option, because that would make wireshark
uninstallable. Therefore, apt installs a number of libs to satisfy the
dependencies of wireshark.

So in both cases, apt proposes a solution that does exactly what you
asked it for. In the first example, there are multiple solutions and apt
happened to pick one that you don't want. Why it picked that one and not
another one, I do not know. Maybe it found this solution quicker.
But all that doesn't mean that the dependencies in Qt are wrong. In
fact, all the libs that apt wants to remove are not compatible with
libqt6core6t64 6.6.2 and therefore removing them is correct.

I absolutely do not see that this is a problem with Qt's dependencies.
It's just that apt gives you a correct solution that you don't like and
hence have to adjust the upgrade command slightly. But nothing is wrong
with Qt's dependencies.

You can either close this bug or you can re-assign the bug to apt and
turn it into a wishlist item suggesting that apt give you more than 1
solution in such cases.

#1074633#35
Date:
2024-07-03 17:45:03 UTC
From:
To:
Note: In the initial test, I had done "apt install libpoppler-dev".
"apt install libqt6core6t64" was just an attempt to simplify it,
but the result is exactly the same.

In any case, this is not satisfactory. Upgrades should always be
favored instead of removals.