#1074633 qt6-base: upgrading libqt6core6t64 removes qpdfview and wireshark instead of upgrading them #1074633
- Package:
- src:qt6-base
- Source:
- src:qt6-base
- Submitter:
- Vincent Lefevre
- Date:
- 2024-07-03 17:48:06 UTC
- Severity:
- normal
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.
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.
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.
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.
In case this can be useful, I've attached the output of apt-get install libqt6core6t64 -s -o Debug::pkgProblemResolver=true
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.
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.