Inhaltsverzeichnis
Debian erneuert den Solver im Paketmanager APT
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.