Nala verleiht dem Debian-Paketmanager nützliche Funktionen

Aus LinuxUser 11/2022

Nala verleiht dem Debian-Paketmanager nützliche Funktionen

© Andrey Tsidvintsev / 123RF.com

Apt auf Steroiden

Mit Nala als Oberfläche läuft Debians Paketmanager Apt zu absoluter Bestform auf. Das Frontend vereint die Zuverlässigkeit der Apt-Tools mit einer Ausgabe, die das intuitive Erfassen wichtiger Fakten erleichtert.

Debians Paketmanagement für die Kommandozeile setzt auf Dpkg [1] im Hintergrund und das Advanced Package Tool Apt [2] sowie dessen Standard-Frontend apt. Es verrichtet seinen Job in der Regel sehr zuverlässig. Dennoch dürfte sich kaum jemand zu der Behauptung versteigen, die in der Apt-Suite versammelten, auf den Bibliotheken libapt-pkg und libapt-inst basierenden CLI-Tools wie apt, apt-file, apt-policy und andere seien besonders übersichtlich oder ihr Erscheinungsbild schmeichle dem Auge. Zudem gehen sie bei ihrer Aufgabe nicht gerade zügig ans Werk.

Das – und andere ihm aufstoßende Unzulänglichkeiten bei den in Debian zur Verfügung stehenden Tools – veranlassten 2019 den langjährigen Debian-Entwickler Michael Stapelberg, mit einer geharnischten Kritik seinen Rückzug bekannt zu geben [3]. In der Folge rief er die experimentelle Distribution Distri ins Leben, mit dem Ziel, das Paketmanagement generell zu optimieren. LinuxUser berichtete darüber bereits in Ausgabe 03/2021 im Artikel “Flotter Paketdienst” [4].

Was Apt tut

Das interaktive Kommandozeilenprogramm Apt kümmert sich als Bestandteil des Advanced Package Tools bei Debian, Ubuntu und deren Derivaten als Benutzerschnittstelle um die Paketverwaltung. Dabei übernimmt es Aufgaben wie das Installieren, Deinstallieren oder Suchen von Paketen und die Anzeige von Informationen dazu. Eine farbige Ausgabe besitzt es nicht, aber immerhin eine Fortschrittsanzeige (Abbildung 1). Sie interagieren mit dem Tool über Unterbefehle wie update, upgrade, full-upgrade, install, remove und purge. Die Grundlage der über Apt zu installierenden Pakete bilden die in der Quellenliste unter /etc/apt/sources.list.d/ eingetragenen Repositories.

Abbildung 1: Die Ausgabe von Apt zum Aktualisieren der Quellenliste gleicht einer Bleiwüste ohne Fokus auf wichtige Informationen.

Abbildung 1: Die Ausgabe von Apt zum Aktualisieren der Quellenliste gleicht einer Bleiwüste ohne Fokus auf wichtige Informationen.

Seit Jahresbeginn macht ein weiteres Apt-Frontend namens Nala die Runde. Anders als Apt nutzt es die Bibliothek python-apt [5] als Basis. Diese Library bietet Zugang zu fast allen Funktionen, die die den Apt zugrunde liegenden Bibliotheken libapt-pkg und libapt-inst unterstützen. Entsprechend lassen sich Frontend-Programme für Apt wie eben Nala in Python schreiben.

Obwohl noch recht jung, findet sich Nala bereits in den Archiven von Distributionen wie Debian Testing und Unstable, Kali Linux, MX Linux, Raspbian Testing und Ubuntu 22.04 Backports. Für andere Debian-Derivate binden Sie das Repository des Entwicklers wie im Wiki auf Github beschrieben ein [6]. Alternativ laden Sie das Werkzeug als DEB-Paket herunter und installieren es direkt.

Aktuell liegt Nala in Version 0.11 vor und lässt sich in den Shells Bash, ZFS und Fish benutzen. Für Debian Stable, Ubuntu 21.04 und Distributionen, die auf deren Paketbestand beruhen, müssen Sie das Paket nala-legacy verwenden. Es liefert dieselben Funktionen und ist lediglich hinsichtlich der Abhängigkeiten an den älteren Paketbestand angepasst. Mit noch älteren Distributionsversionen wie Ubuntu 18.04 oder Debian 10 “Buster” können Sie Nala nicht einsetzen.

Was Nala bietet

Gerade, wenn Sie Debian Testing oder Unstable beziehungsweise andere Rolling-Release-Distributionen auf Basis von DEB-Paketen nutzen, ist es wegen der vielen Änderungen wichtig, die Ausgaben des Paketmanagements bei Paketinstallationen oder Aktualisierungen der gesamten Installation auf der Kommandozeile intuitiv erfassen und verstehen zu können. Hier liegt einer der Ansatzpunkte von Nala, das unter anderem von Fedoras Paketmanager Dnf inspiriert wurde. Die Ausgabe soll sich leichter erschließen, wo nötig ausführlich sein und zurückhaltend, wo möglich. Das erreicht Nala durch mehr Farben und die Art, wie es die Ausgaben formatiert (Abbildung 2).

Abbildung 2: Bei Nala sehen Sie sofort, welche Repositories seit dem letzten Update aktualisiert wurden. Zudem hebt die Ausgabe auch ignorierte Quellen hervor.

Abbildung 2: Bei Nala sehen Sie sofort, welche Repositories seit dem letzten Update aktualisiert wurden. Zudem hebt die Ausgabe auch ignorierte Quellen hervor.

Beim Aufruf unterscheidet sich Nala ein wenig von Apt. Das Kommando sudo nala update bewirkt dasselbe wie sudo apt update: Der Befehl aktualisiert die Quellenliste unter etc/apt/sources.list.d. Wenn Sie dagegen sudo nala upgrade eingeben, nimmt das Tool ein apt update && apt full-upgrade vor (Abbildung 3). Das liegt daran, dass die Entwickler Nala mit Blick auf Rolling Releases konzipiert haben. Das Kommando funktioniert aber genauso auf stabilen Distributionen.

Abbildung 3: Nala hebt beim Upgrade in der rechten Spalte die neue Version der zu aktualisierenden Pakete farblich hervor. Die Zusammenfassung zeigt klar die zu installierenden und zu aktualisierenden Pakete und den Umfang des Upgrades.

Abbildung 3: Nala hebt beim Upgrade in der rechten Spalte die neue Version der zu aktualisierenden Pakete farblich hervor. Die Zusammenfassung zeigt klar die zu installierenden und zu aktualisierenden Pakete und den Umfang des Upgrades.

Bei der Aktualisierung hebt Nala wichtige Aspekte der Ausgabe farblich hervor. So sehen Sie auf den ersten Blick, welche Repositories neue Pakete bieten und auf welche Version ein Paket aktualisiert wird. Zusätzlich markiert das Tool all jene Repositories farblich, die es wegen falscher Konfiguration oder fehlendem Schlüssel ignoriert. Während des Aktualisierens von Paketen nennt Nala im Fortschrittsbalken verlässlich die verbleibende Zeit, das erledigte Pensum in Prozent und die Anzahl der bereits abgearbeiteten Pakete des Gesamt-Updates (Abbildung 4).

Abbildung 4: Nach dem erfolgreichen Abschluss eines Upgrades informiert Nala Sie über den Verlauf und einen eventuell erforderlichen Neustart.

Abbildung 4: Nach dem erfolgreichen Abschluss eines Upgrades informiert Nala Sie über den Verlauf und einen eventuell erforderlichen Neustart.

Eine nicht immer erwünschte Eigenart von Nala ist es, beim Befehl sudo nala upgrade zusätzlich das Kommando sudo apt autoremove zu integrieren, das nicht mehr benötigte Pakete entfernt (Abbildung 5). Erfahrungsgemäß verschwinden dabei ab und zu eigentlich noch benötigte Pakete. Daher empfiehlt es sich, dieses Verhalten zu unterbinden, indem Sie Nala mit dem Parameter --no-autoremove aufrufen.

Abbildung 5: Wenn Sie nicht m&ouml;chten, dass Nala den Befehl <code>autoremove</code> beim Upgrade ausf&uuml;hrt, verhindern Sie das &uuml;ber die Konfigurationsdatei.

Abbildung 5: Wenn Sie nicht möchten, dass Nala den Befehl autoremove beim Upgrade ausführt, verhindern Sie das über die Konfigurationsdatei.

Alternativ tragen Sie Ihren Wunsch permanent in der Datei /etc/nala/nala.conf ein, indem Sie dort den zweiten Eintrag auf auto_remove = false setzen. Wollen Sie den Paketbestand dann doch einmal von Nala bereinigen lassen, verwenden Sie beim Aufruf den Parameter --autoremove. In der Konfigurationsdatei finden Sie noch weitere vereinfachende Einstellungen, die Apt nicht anbietet. Das reicht bis hin zu Hooks, die vor oder nach der Installation eines Pakets automatisch skriptgesteuerte Aktionen ausführen. Ein Video auf Reddit erläutert diese Funktion mit einem Beispiel [7].

TIPP

Sollte Apt unauslöschlich in Ihrem Fingergedächtnis verankert sein, dann legen Sie einfach ein Alias an und nutzen weiterhin die gewohnten Befehle, während im Hintergrund Nala werkelt.

Was Apt ausbremst

Die Debian-Entwickler wehren sich seit 2002 dagegen, ein paralleles Herunterladen vom selben Server zuzulassen, mit der Begründung, dies bedeute eine zu hohe Belastung für die Server bei gleichzeitig wenig Gewinn [8]. Dieses Argument bedarf heute angesichts von HTTP/2 und bald HTTP/3 zumindest der Überprüfung. Andere Distributionen ermöglichen ein paralleles Herunterladen vom selben Host schon lang. Bei Debian können Sie den Shell-Skript-Wrapper Apt-fast von Github installieren, der die Download-Zeiten von Apt drastisch verbessert, indem er Pakete parallel herunterlädt, mit mehreren Verbindungen pro Host [9].

Nala macht Apt-fast überflüssig: Das parallele Herunterladen gehört hier bereits zum Konzept. Standardmäßig lädt Nala drei Pakete pro eindeutigem Spiegelserver in Ihrer Quellenliste herunter. Außerdem alterniert Nala die Downloads zwischen den verfügbaren Mirrors, um die Geschwindigkeit noch weiter zu erhöhen. Fällt ein Server aus irgendeinem Grund aus, versucht das Tool den nächsten, bis es alle definierten Server abgearbeitet hat.

Damit nicht genug: Mit dem Befehl sudo nala fetch weisen Sie Nala an, alle verfügbaren Spiegelserver auf ihre Leistung in Bezug auf Ihren Standort zu testen (Abbildung 6). Im Test überprüfte es 332 Server auf ihre Geschwindigkeit, woraus eine Liste der 16 an unserem Standort schnellsten deutschen und europäischen Servern resultierte. Der erste Server in der Liste hatte eine Antwortzeit von 21 ms, der letzte lag bei 28 ms. Sie geben nun die gewünschten Server als durch Leerzeichen getrennte Liste von Zahlen ein und bestätigen durch einen Druck auf die Eingabetaste. Daraufhin schreibt Nala die gewünschten Server in eine neue Quellenliste namens nala-sources-list und benutzt sie fortan. Es ist durchaus sinnvoll, dieses Vorgehen alle paar Monate zu wiederholen.

Abbildung 6: Der Befehl <code>nala fetch</code> &uuml;berpr&uuml;ft alle Debian-Mirrors und sucht die schnellsten f&uuml;r Ihren Standort heraus.

Abbildung 6: Der Befehl nala fetch überprüft alle Debian-Mirrors und sucht die schnellsten für Ihren Standort heraus.

Historisches

Haben Sie schon einmal versucht, eine schiefgegangene Aktualisierung in Debian rückgängig zu machen? Bei einzelnen Paketen lässt sich das leicht machen, indem man wie in sudo apt install foo=0.98.2 neben dem Paketnamen die gewünschte Version für das Downgrade angibt. Bei einer Aktualisierung mit vielen Paketen enden Sie dann aber bei Konstrukten wie dem aus Listing 1.

Listing 1

Downgrade

$ awk '$1 == "2022-08-25" && $3 == "upgrade" {print $4"="$5}' /var/log/dpkg.log

Nala bietet Ihnen eine bei Fedoras Paketmanager Dnf entliehene History-Funktion, die nicht nur anzeigt, was während der Aktualisierung passiert ist, sondern diese auch komplett zurückrollen kann. Derzeit befindet sich die Funktion noch in der Entwicklung und funktioniert nur für einzelne Pakete und deren Abhängigkeiten. Die Ausgabe des Befehls sudo nala history zeigt die letzten Aktionen an, egal, ob es sich um eine einzelne Paketinstallation, ein entferntes Paket oder ein System-Upgrade mit 300 Paketen handelt.

Gerade bei System-Upgrades, bei denen sich ein Fehler eingeschlichen hat, wird diese Funktion ungemein hilfreich sein, sobald sie einmal voll implementiert ist. Nicht umsonst streben immer mehr Distributionen Snapshots und atomare Upgrades in Form von Images an. Da diese modernen Techniken bei Debian aber noch in weiter Ferne liegen, bietet Nalas History-Funktion hier eine passable Alternative, die kaum Aufwand erfordert.

Die zeilenweise Ausgabe der History beginnt links mit einer ID, die für das Zurückrollen eine entscheidende Rolle spielt (Abbildung 7). Dann erscheint der von Apt verwendete Befehl, wobei Nala zum Teil noch update mit upgrade als Parameter verwechselt. Aber da es dabei nur um Information geht, hat das keine weitergehenden Auswirkungen. Haben Sie die rückgängig zu machende Aktion gefunden, verwenden Sie die ID der Zeile im Befehl sudo nala history undo ID. Danach ist alles wieder wie vorher. Sollten Sie es sich doch noch anders überlegen, kehrt ein sudo nala history redo ID den Prozess wieder um und installiert das Upgrade erneut.

Abbildung 7: Nalas History-Funktion erlaubt k&uuml;nftig das Zur&uuml;ckrollen kompletter Upgrades. Das ist sehr hilfreich, sollte bei einer Aktualisierung etwas schiefgehen.

Abbildung 7: Nalas History-Funktion erlaubt künftig das Zurückrollen kompletter Upgrades. Das ist sehr hilfreich, sollte bei einer Aktualisierung etwas schiefgehen.

Fazit

Nala erweitert Debians Paketmanagement um einige wichtige Punkte: Die Ausgaben sind augenfreundlich bunt und informativ. Unnötiges fällt weg, alles Wichtige hebt das Tool farblich hervor. Die parallelen Downloads beschleunigen Update und Upgrade, während die Fetch-Funktion zusätzlich die schnellsten Spiegelserver favorisiert. Der Clou ist aber Nalas Historie, die Debian künftig in die Nähe von Snapshot-unterstützten Distributionen katapultieren soll. Der Entwickler beabsichtigt zeitnah, Nala von Python nach Rust zu portieren, um noch mehr Geschwindigkeit herauszukitzeln. Dabei will er dann auch die erweiterte History-Funktion integrieren.

Der Autor hat Nala seit einem halben Jahr täglich im Einsatz, ohne dass gravierende Fehler auftraten. In seltenen Fällen bleibt das Upgrade aus unerfindlichen Gründen hängen, läuft aber nach einem Druck auf die Eingabetaste normal weiter. Nala erweitert Apt in einer Weise, die es besonders für Anwender von Debian Testing, Unstable und deren Ablegern interessant macht. Aber auch unter Ubuntu und anderen Debian-Derivaten machen Aktualisierungen damit mehr Spaß. (csi)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2022 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben