Bereits im Mai berichteten wir über einen neuen Solver für APT. Ein Solver ist ein Algorithmus zur Bestimmung und Auflösung von Abhängigkeiten und Konflikten bei der Aktualisierung des Paketbestands unter Debian. Das Paketverwaltungssystem Advanced Packaging Tool (APT) wurde vor 26 Jahren eingeführt und so alt ist auch der derzeit implementierte Solver.
Veränderte Anforderungen
Angesichts der seither veränderten Anforderungen ist es an der Zeit, einen neuen Solver zu entwickeln. Bei der Komplexität der Aufgabe ist es nicht verwunderlich, dass Entwickler Andreas Klode bereits seit 2010 in seiner Freizeit an dieser Aufgabe arbeitet. Derzeit ist Solver3 in der Alpha-Phase und wurde in APT 2.9.3 experimentell eingeführt. Um den neuen Solver zu testen, wird die Option --solver 3.0 bei Aktionen mit APT mit angegeben. Klode hat die Funktionsweise von Solver3 in seinem Blog beschrieben. Auf der gerade stattfindenden Debian-Entwicklerkonferenz DebConf 24 hielt er einen Vortrag zum Thema.
Vergleichsweise langsam
Wer eine Debian-Installation über viele Jahre pflegt und somit vermutlich einen umfassenden Paketbestand hat, wird wissen, dass APT bei einem apt update gehörig lange braucht, um die Quellen zu aktualisieren. Das liegt daran, dass APT bei Updates und Upgrades 45 % der Zeit damit verbringt, den gesamten Abhängigkeitsbaum zu überprüfen.
Es werden also alle Abhängigkeiten im Archiv durchlaufen und geprüft, ob alle zufrieden gestellt sind oder nicht. Das ist eine enorme Zeitverschwendung, die vor 26 Jahren funktioniert hat, weil es nicht viele Pakete und noch viel weniger Abhängigkeiten im Archiv gab. Aber heutzutage sind die Dinge viel zu kompliziert, um alle Abhängigkeiten im Archiv zu berücksichtigen.
Andreas Klode, DebConf 24
Um einiges schneller
Solver3 durchläuft die notwendigen Überprüfungen um einiges schneller und kann so bis zu 40 % der Zeit einsparen. Der neue Solver verfügt über eine Reihe weiterer zeitsparender Funktionen. Zum einen werden manuell installierte Pakete nicht entfernt. Es wird eine Erklärung angeboten, warum ein Paket aktualisiert oder entfernt wird, wobei der Weg zurückverfolgt wird, den der Solver genommen hat, um die Paketabhängigkeiten aufzulösen. Mit der Problematik, warum die meisten Paketmanager so langsam sind, hatte sich bereits 2019 der ehemalige Debian-Entwickler Michael Stapelberg auseinandergesetzt.
Solver3 kann zudem per apt install -fix-policy angewiesen werden, alle Pakete zu ignorieren, die automatisch installiert wurden, um die Gesamtintegrität des Pakets zu erhalten.
Aptitude als Alternative zu APT verfügt über den Befehl aptitude why, der erklärt, warum ein Paket installiert ist und wovon es abhängt. APT wird diese Funktion auch erhalten, sie funktioniert in der derzeit in Unstable verfügbaren v2.9.7 allerdings bisher nicht.
Klode probierte über die Jahre verschiedene Herangehensweisen auf verschiedenen mathematischen Grundlagen aus, bevor er beim jetzigen Solver3 landete.

Kein striktes Pinning
Interessant ist auch die neue Option --no-strict-pinning, die den Solver anweist, alle Versionen eines Pakets zu berücksichtigen und nicht nur den jeweiligen Installationskandidaten. Bei der Verwendung dieser Option kann die Option --solver 3.0 entfallen. Als Beispiel könnte man apt install foo=2.0 --no-strict-pinning verwenden, um die Version 2.0 des Pakets foo zu installieren und Pakete nach Bedarf zu aktualisieren – oder herunterzustufen -, um foo=2.0-Abhängigkeiten zu erfüllen. Das ist beispielsweise hilfreich bei der Installation von Paketen aus Debian Experimental oder Ubuntu Proposed, wenn es darum geht, so viel wie möglich von der installierten Basis zu behalten.
Noch viel zu tun
Solver3 wird noch viel Arbeit verlangen, wie Klose betonte. Pakete für mehrere Architekturen sollen nur auf die verwendeten Architekturen beschränkt werden. Manuell erstellte Pakete sollten nur auf ausdrücklichen Wunsch entfernt werden, und es sollte gegebenenfalls ein Ersatzpaket bestimmt werden. Veraltete Pakete sollten ebenfalls nur als letzte Möglichkeit in Betracht gezogen werden.
Solver3 soll im Februar 2025 für Debian 13 »Trixie« produktiv eingesetzt werden können und mit dessen vermutlichen Veröffentlichung im Sommer 2025 mit APT 3.0 zum Standard werden. Wer an weiteren Vorträgen der DebConf 24 interessiert ist, wird hier fündig.

Ich habe verstanden, dass es nicht nur um eine Effizienz Steigerung geht, sondern noch zusätzliche Funktionen erhalten soll.
Eine Weiterentwicklung/Pflege finde ich immer gerechtfertigt. Das dabei eine höhere Effizienz und zusätzliche Funktionen heraus springen, ist nicht verwerflich.
Ist doch wie bei der Modellpflege von Autos: Werden sparsamer, sehen schicker aus und bieten mehr Features (wenn alles gut läuft😁).
So sollte das hier auch so sein, dann ist alles gut.
Finde das vorausschauend von Debian (läuft ja such schon ein wenig die Entwicklung).
Geht Nala nicht in die selbe Richtung oder greift Nala auf Apt zu?
Nala ist ein Front-End für libapt-pkg und verwendet insbesondere die Python-API als Schnittstelle.
hm.
Was ist da jetzt wirklich besser, notwendig?
Für mich hört sich das an nach:
“Oh das ist schon so alt, da muss nun endlich mal was neues reinkommen. Ob nötig oder nicht ist egal. Hauptsache neuer.”
Ist doch momentan überall die gängige Praxis.
Belehrt mich eines besseren, falls ich es falsch sehe.
Ich arbeite jetzt auch schon eine Weile mit Debian und Ubuntu, insgesamt habe ich nicht das Gefühl unnötiger Länge beim Aktualisieren. Manche Dinge brauchen einfach ein paar Sekunden, kann ja nicht alles immer in Nullzeit geschehen …
Bei mir sinds schon eher Minuten. Ich werd es morgen mal timen. Ich habe allerdings auch einige 3rd party Repos drin
Bei mir tummelt sich auch die eine oder andere PPA oder APT Repo in den Quellen, insgesamt geht gefühlt ganz fluffig voran … Für klingt es insgesamt nach einem herbeigeredeten Problem, das eigentlich keines ist … und wie oft bekommt man bei einer gut konfigurierten Automatik den Konsolen-Output überhaupt zu sehen?! Eigentlich nur bei einer Neuinstallation …
Nehmen wir mal eine durchschnittliche Lebenserwartung einer menschlichen Person (D/F/M) in der BRD mit circa achtzig Jahren an. Die paar Sekunden oder Minuten … 🙂
… machen den Kohl auch nicht schlank.
Ich aktualisiere täglich mehrere Rechner, manchmal auch mehrmals täglich…
Mehrere Rechner, Ok. Mehrmals täglich weil rolling oder warum ist das notwendig?
Das Gegenteil von dem was ich mir bei einer Distribution wünsche. Da bin ich mit Debian schon sehr verwöhnt, für mich im positivem Sinn.
Ist nicht wirklich wichtig, würde mich aber dennoch interessieren warum.
Wenn man eine Distribution herausgibt, will man wissen, was reinkommt. Wir erhalten quasi die Pakete heute, die unsere User morgen aus dem Unstable Repo bekommen.
Danke😉
Naja, Debian ist am Ende. Es röchelt noch. Da müßen die nun noch einen Rettungsversuch starten.
Ich verstehe dich nicht und eigentlich hatte ich mir selber Urlaub auf erlegt. Tux Nix findet dich ja charmant. Mich nervt es einfach nur. In dem ich darauf reagiere hast du schon erreicht, was du wolltest. Ist mir klar! Ich finde das einfach nur kindisch, unqualifiziert und Respektlos den vielen Debian Entwicklern gegenüber.
Ich selbst nutze eine Debian-basierte Distro, aber ich mache mir schon Sorgen, dass Pakete in letzter Zeit kaum noch aktualisiert werden. Und das hat auch nichts mit t64-Transition zu tun, da diese längst abgeschlossen ist.
KDE ist noch bei 5.x, obwohl schon seit einem halben Jahr KDE 6.x draußen ist. Mate ist noch bei 1.26, obwohl schon seit einem halben Jahr Mate 1.28 draußen ist, Cinnamon steckt bei 6.0.x, obwohl schon längst 6.2.x erschienen ist. Gnome 46 wurde erst vor kurzem reingeholt, davor steckte es fast ein Jahr bei Gnome 44. Gnome 45 wurde komplett übersprungen. Budgie Desktop steckt weiterhin bei 10.8.x und soll angeblich momentan gar nicht funktionsfähig sein wegen eines Gnome-Updates. Bei RPM-basierten Distributionen gibt es alle Updates zeitnah, fast tagesaktuell, bei Debian scheint momentan leider der Wurm drin zu stecken.
Ansonsten freue ich mich riesig über den neuen Solver, der einige Unzulänglichkeiten beseitigt, mit denen ich die letzten Jahre zu tun hatte.
Die t-64-Transition ist zwar abgeschlossen, hat aber alle Entwicklungen um mindestens 4 – 6 Wochen verzögert. Alles, was du aufzählst, sind ja keine Dinge, die in wenigen Tagen erledigt sind. Plasma lässt sich derzeit bereits aus
experimentalbauen, sollte also nicht mehr ewig dauern.