On Tue, Jun 16, 2026 at 05:56:17PM +0000, Helge Kreutzmann wrote: > Hello Julian, > thanks for the explanation and debugging hints. > > Am Tue, Jun 16, 2026 at 07:02:10PM +0200 schrieb Julian Andres Klode: > > On Sat, Jun 06, 2026 at 02:30:15PM +0000, Helge Kreutzmann wrote: > > > root@twentytwo:~# LC_ALL=C apt update > > > Hit:1 http://127.0.0.1:9999/ftp.de.debian.org/debian forky InRelease > > > 92 packages can be upgraded. Run 'apt list --upgradable' to see them. > > > root@twentytwo:~# LC_ALL=C apt upgrade > > > Not upgrading: > > > cups-filters libkf5kirigami2-5 libqt5multimediaquick5 > > > libqt5quickwidgets5 libqt5waylandcompositor5 > > > librust-block-buffer-dev poppler-utils > > > qml-module-qtquick-templates2 > > > cups-filters-core-drivers libkf5waylandclient5 > > > libqt5multimediawidgets5 libqt5script5 libqt5webchannel5 > > > librust-crypto-common-dev python3-pyqt5 > > > qml-module-qtquick-window2 > > > graphviz libkf5xmlgui5 libqt5network5t64 > > > libqt5sensors5 libqt5webengine-data librust-digest-dev > > > qdbus-qt5 qml-module-qtquick2 > > > inkscape libkpim6itinerary6 libqt5networkauth5 > > > libqt5serialport5 libqt5webengine5 librust-getrandom-dev > > > qml-module-org-kde-kirigami2 qml-module-qtwebengine > > > kwayland-integration libpoppler-glib8t64 libqt5positioning5 > > > libqt5sql5-mysql libqt5webenginecore5 librust-rand-core-dev > > > qml-module-qtgraphicaleffects qt5-gtk-platformtheme > > > libcurl3t64-gnutls libpoppler-qt5-1t64 libqt5printsupport5t64 > > > libqt5sql5-psql libqt5webenginewidgets5 librust-sha2-dev > > > qml-module-qtmultimedia qt5-image-formats-plugins > > > libegl-mesa0 libpoppler-qt6-3t64 libqt5qml5 > > > libqt5sql5-sqlite libqt5widgets5t64 libselinux1 > > > qml-module-qtqml qtspeech5-speechd-plugin > > > libgbm1 libqt5core5t64 libqt5qmlmodels5 > > > libqt5sql5t64 libqt5x11extras5 libsemanage2 > > > qml-module-qtquick-controls qtwayland5 > > > libgl1-mesa-dri libqt5dbus5t64 libqt5qmlworkerscript5 > > > libqt5svg5 libqt5xdgiconloader3 mesa-libgallium > > > qml-module-qtquick-controls2 > > > libglx-mesa0 libqt5designer5 libqt5quick5 > > > libqt5test5t64 libqt5xml5t64 node-jest-debbundle > > > qml-module-qtquick-dialogs > > > libkf5i18nlocaledata5 libqt5gui5t64 libqt5quickcontrols2-5 > > > libqt5texttospeech5 libqt5xmlpatterns5 pdf2djvu > > > qml-module-qtquick-layouts > > > libkf5iconthemes5 libqt5multimedia5 > > > libqt5quicktemplates2-5 libqt5waylandclient5 librust-blobby-dev > > > pdfgrep qml-module-qtquick-privatewidgets > > > > > > Summary: > > > Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 92 > > > root@twentytwo:~# LC_ALL=C apt dist-upgrade > > > Not upgrading: > > > cups-filters libkf5kirigami2-5 libqt5multimediaquick5 > > > libqt5quickwidgets5 libqt5waylandcompositor5 > > > librust-block-buffer-dev poppler-utils > > > qml-module-qtquick-templates2 > > > cups-filters-core-drivers libkf5waylandclient5 > > > libqt5multimediawidgets5 libqt5script5 libqt5webchannel5 > > > librust-crypto-common-dev python3-pyqt5 > > > qml-module-qtquick-window2 > > > graphviz libkf5xmlgui5 libqt5network5t64 > > > libqt5sensors5 libqt5webengine-data librust-digest-dev > > > qdbus-qt5 qml-module-qtquick2 > > > inkscape libkpim6itinerary6 libqt5networkauth5 > > > libqt5serialport5 libqt5webengine5 librust-getrandom-dev > > > qml-module-org-kde-kirigami2 qml-module-qtwebengine > > > kwayland-integration libpoppler-glib8t64 libqt5positioning5 > > > libqt5sql5-mysql libqt5webenginecore5 librust-rand-core-dev > > > qml-module-qtgraphicaleffects qt5-gtk-platformtheme > > > libcurl3t64-gnutls libpoppler-qt5-1t64 libqt5printsupport5t64 > > > libqt5sql5-psql libqt5webenginewidgets5 librust-sha2-dev > > > qml-module-qtmultimedia qt5-image-formats-plugins > > > libegl-mesa0 libpoppler-qt6-3t64 libqt5qml5 > > > libqt5sql5-sqlite libqt5widgets5t64 libselinux1 > > > qml-module-qtqml qtspeech5-speechd-plugin > > > libgbm1 libqt5core5t64 libqt5qmlmodels5 > > > libqt5sql5t64 libqt5x11extras5 libsemanage2 > > > qml-module-qtquick-controls qtwayland5 > > > libgl1-mesa-dri libqt5dbus5t64 libqt5qmlworkerscript5 > > > libqt5svg5 libqt5xdgiconloader3 mesa-libgallium > > > qml-module-qtquick-controls2 > > > libglx-mesa0 libqt5designer5 libqt5quick5 > > > libqt5test5t64 libqt5xml5t64 node-jest-debbundle > > > qml-module-qtquick-dialogs > > > libkf5i18nlocaledata5 libqt5gui5t64 libqt5quickcontrols2-5 > > > libqt5texttospeech5 libqt5xmlpatterns5 pdf2djvu > > > qml-module-qtquick-layouts > > > libkf5iconthemes5 libqt5multimedia5 > > > libqt5quicktemplates2-5 libqt5waylandclient5 librust-blobby-dev > > > pdfgrep qml-module-qtquick-privatewidgets > > > > > > Summary: > > > Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 92 > > > > You'll want to specify -o Debug::APT::Solver=3 (or 2, or 1) to see the > > reasoning as it goes along. In particular, you will easily find lines > > with Reject: or Install: for the specific versions, say: > > In the meantime I already installd cups-filters (just with "apt > install"), but most of the others are still there (and the set grows). > > Let's take graphviz as an example now. I performe the "dist-upgrade" > with the "Solver=3". The entire output is 11 M (if you want, I can > provide this), but then grepping for graphviz yields:
If you can run an apt dist-upgrade -o Dir::Log::Solver=/path/to/some/file.zst --solver internal (not sure I fixed it to not require --solver internal) That dumps the problem into a minimal reproducer, compressed with zstd, so I can have a look at it and (if ok) add it to my regression test cases: https://salsa.debian.org/apt-team/apt-tests > [...] > [1662] Reject:graphviz:amd64=14.1.2-1+b1 (libgvc6:amd64 -> > libgvc6:amd64=2.42.4-3 -> not libgvplugin-gd8:amd64) > Propagate not libgvplugin-pango8:amd64 to graphviz:amd64=14.1.2-1+b1 -> | > libgvplugin-pango8:amd64 > Propagate not graphviz:amd64=14.1.2-1+b1 to graphviz:amd64 -> | > graphviz:amd64=14.1.2-1+b1 | graphviz:amd64=2.42.4-3 > [1662] Install:graphviz:amd64=2.42.4-3 (gimp:amd64 -> graphviz:amd64) > > However, I cannot really parse the „Reject“ line. Seems libgvc6 is manually installed, and libgvplugin-gd8 has a Breaks libgvc6 (<< 8.1.0-1~), meanwhile the last libgvc6 is 2.42.4-3 which is only available in stable. The solver will usually consider them obsolete and try to avoid them, but if it's manually installed, that overrides the "obsolete" reason as people frequently build local only packages and don't want the solver to go remove them... However, the solver is arguably too eager here. When I made it strongly protect manually installed packages I did not consider obsoletes, it stands to reason obsolete manuals should have less protection.* * There are three ways the solver protects manuals: (1) Before resolving anything it primes the solver by pushing "assumptions" that all of them remain installed. In upgrade land, since upgrades are always optional, that causes upgrades to be kept back if they were to remove anything (2) In the order of solving, it tries to keep manually installed packages first; that is, there is a work queue of "install this package", and the manuals come first. (3) In the order of dependencies, it will move - installed packages to the start - obsolete packages to the end And then it resolves left-to-right. It stands to reason that for obsolete manuals we should likely remove protection 1 and 2. Enough "peer pressure" from other dependency paths would then hopefully lead to them being removed. (Hopefully I say, because guaranteeing a correct result for upgrades is not feasible, because it's not well-defined; there are incredibly complex nuances in behavior expectations; for example, it's not better to upgrade 2 packages than 1 if you break a Recommends; so you cannot prioritize upgrading all packages) To go step by step: > [1662] Reject:graphviz:amd64=14.1.2-1+b1 This version (the new one) was rejected. The reason for that chain is in parenthesis: > (libgvc6:amd64 libgvc6 was (likely manually) installed > -> libgvc6:amd64=2.42.4-3 this in turn selected that particular version of it [I think there only is one, but it is what it is :)] > -> not libgvplugin-gd8:amd64 Due to installing that version of libgvc6 we could not install libgvplugin-gd8 [due to the Breaks if you recall] (And that is essentially the end of the reasoning trail for "why Reject:graphviz:amd64=14.1.2-1+b1", graphviz depends on libgvplugin-gd8) -- debian developer - deb.li/jak | jak-linux.org - free software dev ubuntu core developer i speak de, en
signature.asc
Description: PGP signature

