Tutorial: Paketverwaltung mit Aptitude
Quelle: http://www.documentroot.net/linux/tutorial-aptitude-paketverwaltung
Debians Aptitude ist ein äußerst mächtiges und ausgefeiltes Paketverwaltungstool, das unscheinbar wirkt, aber alles andere als unscheinbar ist. Es besitzt eine grafische Oberfläche auf Basis von ncurses, läuft also innerhalb der Konsole. Gesteuert wird Aptitude per Tastatur – Mausbedienung in einem grafischen Terminal ist auch möglich, allerdings unbequem und langsam. Hört sich nicht berauschend an, aber in diesem Tutorial will ich euch vom Gegenteil überzeugen: Aptitude ist schnell, hat eine unschlagbare Suchfunktion und macht die Paketverwaltung zur reinen Freude.
Gestartet wird Aptitude einfach mit dem gleichlautenden, aber klein geschriebenen Befehl auf der Kommandozeile. Es öffnet sich die grafische Benutzeroberfläche. Alternativ kann man auch direkt Befehle per Kommandozeile an Aptitude übergeben, dann arbeitet das Tool ähnlich wie apt-get.
~ Die Benutzeroberfläche ~
Nach dem Start präsentiert sich Aptitude folgendermaßen:

Oben finden wir eine Menüleiste, die alle Kommandos enthält, die Aptitude versteht. Sie ist praktisch, wenn man mal einen Shortcut vergessen hat.
Unter dem Menü sind dann als Erinnerungshilfe die wichtigsten Shortcuts aufgeführt – unter anderem Ctrl+T, mit dem das Menü geöffnet wird.
Den Hauptteil des Bildschirm nehmen zwei Flächen ein: die obere enthält eine Auflistung aller Pakete als Baumansicht – momentan noch eingeklappt, die untere Fläche ist ein Info-Bereich, in dem Informationen zum aktuell gewählten Paket erscheinen. An dieser Stelle kann man ruhig mal etwas rumprobieren: mit Pfeiltasten und Enter navigiert man durch den Paketbaum, mit “i” kann man dann durch die verschiedenen Infos im unteren Bereich switchen.

Im Infobereich können drei verschiedene Informationen zu einem Paket angezeigt werden:
» Installationsstatus (installiert oder nicht installiert)
» Der Grund, warum ein Paket installiert ist, bzw. sein sollte (z.B. weil ein anderes Paket davon abhängt oder weil es von einem anderen Paket empfohlen wird)
» Eine Textbeschreibung des Paketes – wofür es gut ist, was es kann, etc.
~ Update der Paketlisten ~
Nun wird es Zeit, die Paketquellen zu aktualisieren, sodass wir eine aktualisierte Paketdatenbank haben. Dazu reicht ein schlichter Druck auf “u” (update) und schon rattert das Update durch.

Dem aufmerksamen Beobachter könnte aufgefallen sein, dass unterhalb des Menüs nun zwei Tabs aufgetaucht sind: “Pakete” und “Listenaktualisierung”. Die Paketansicht, in der wir vorher waren, wurde also durch das Update nicht geschlossen sondern ist nur in den Hintergund gerückt. Mit F6 und F7 kann man sich vorwärts und rückwärts durch die Tabs schalten, um diese wieder nach vorne zu holen.
Ist das Paketlisten-Update beendet, so schließt sich dessen Tab automatisch und wir sind wieder zurück beim Paketbaum. Öffnet man ein Tab versehentlich, so kann man es mit “q” wieder schließen. Wird der letzte aktive Tab geschlossen, so beendet sich Aptitude.
~ Paketstatus in Buchstaben kodiert ~
Nun zu den Paketen. Aptitude kann sehr viel mehr, als sich nur zu merken, ob ein Paket installiert ist oder nicht. In den bis zu drei Buchstaben vor dem Paketnamen kodiert Aptitude den Status des Paketes.
Die Status-Buchstaben haben folgende Bedeutungen:
| i | installed | Paket ist installiert |
| p | purged | Paket ist nicht installiert |
| c | configured | Paket ist nicht installiert, Konfiguration ist vorhanden |
| A | automatically | Paket wurde automatisch installiert, um Abhängigkeiten zu erfüllen |
| B | broken | Das Paket hat nicht erfüllte Abhängigkeiten |
~ Aptitude in Aktion ~
Nun wollen wir mal ein Paket installieren, sagen wir kdevelop, die KDE-Web-IDE. Um das Paket in der Liste zu finden, stehen uns zwei Suchfunktionen bereit: die normale Suche, die zur Stelle des Treffers springt und der Suchfilter, der alles aus der Paketansicht entfernt, was nicht auf das Suchmuster zutrifft. Wir benutzen nun die normale Suche (zum Filter später noch ein Beispiel). Geöffnet wird sie mit dem Slash: “/”. Es erscheint ein kleines Fensterchen, in das wir “kdevelop” eingeben.

Schon während dem Tippen sucht Aptitude nach Treffern. Nach einem Druck auf Enter verschwindet das Suchfensterchen wieder. Sollte Aptitude das falsche Paket gefunden haben, weil es ähnlich heißt (z.B. kdevelop-doc), so kann man mit “n” (next) zum nächsten Ergebnis hüpfen, bis man richtig ist.

In den Suchanfragen versteht Aptitude reguläre Ausdrucke, also könnte man beispielsweise auch nach dem exakten Treffer suchen: “^kdevelop$”.
Wollen wir das Paket nun installieren, so genügt ein Druck auf “+” (install).

Das Paket wird nun grün hervorgehoben und vor dem Paketnamen taucht ein weiterer Buchstabe auf. Dieser steht direkt nach dem Status-Buchstaben und zeigt die Aktion an, die für das Paket vorgesehen ist. Folgende Aktionen sind möglich:
| i | install | Shortcut: “+” | Installiere Paket |
| d | delete | Shortcut: “-” | Lösche Paket, aber lasse Konfiguration in Ruhe |
| p | purge | Shortcut: “_” | Lösche Paket inkl. Konfigurationsdateien |
| u | update | Shortcut: “+” | Installiere aktuellere Version des Pakets |
| h | hold | Shortcut: “=” | Behalte aktuelle Version bei, selbst wenn es Updates gibt |
Wenn wir ein Paket zur Installation markieren, schaut Aptitude hinter den Kulissen nach, welche zusätzlichen Pakete mit-installiert werden müssen, um Abhängigkeiten zu erfüllen. In diesem Fall das Paket kdevelop-data. Die Abhängigkeiten werden automatisch zur Installation markiert und zusätzlich mit dem Flag “A” versehen (automatisch installiert). So merkt sich Aptitude, welche Pakete wirklich erwünscht sind und welche sozusagen als Abhängigkeiten-Rattenschwanz mit-installiert werden musten.
Werfen wir kdevelop irgendwann später wieder runter, so merkt Aptitude, dass das mit “A” versehene Paket kdevelop-data überflüssig geworden sind und entfernt dieses gleich mit.
Haben wir Aptitude unsere Installations-Absichten mitgeteilt und wollen, dass die Aktion umgesetzt wird, so geschieht das mit einem Druck auf “g” (go). Es öffnet sich ein neuer Tab, in dem nochmal eine Zusammenfassung der gewählten Aktionen angezeigt wird.

Ist irgendwas nicht okay, kann man den Tab mit “q” schließen und seine Auswahl nochmal anpassen. Ist alles in Ordnung, so drückt man erneut “g” und die Installation beginnt.

Sollte man bei der Auswahl der Aktionen mal Mist gebaut haben, so kann man übers Menü “Nicht abgeschlossene Aktionen abbrechen” wählen und befindet sich wieder in der Ausgangssituation.
~ Systemupgrade ~
Damit man bei einem Systemupgrade nicht alle Pakete einzeln zum Upgrade markieren muss, gibt es dafür in Aptitude den Shortcut “U” (Shift+u, upgrade-all).
~ Probleme und deren Lösung ~
Gelegentlich können die Abhängigkeiten der Pakete dazu führen, dass es irgendwo kracht. Ein zu installierendes Paket hängt von einem anderen ab, das wiederrum von einem anderen abhängt, das in Konflikt zu einem bereits installierten Paket steht (oder noch beliebig viel komplizierter). Wenn sowas passiert, meldet sich Aptitude mit einem roten Balken, in dem es mitteilt, was los ist.

Aptitude bietet auch sofort von sich aus die erstbeste (nicht unbedingt die beste) Lösung zur Behebung an, die man mit einem Druck auf “!” anwenden kann. Alternativ und sicher die bessere Methode ist es, sich einen Überblick über mögliche Lösungen zu verschaffen. Dafür drückt man “e” (examine), um einen neuen Tab für den Konfliktlöser zu öffnen.

Hier wird nun direkt ein Lösungsvorschlag gemacht. Ist man mit diesem nicht zufrieden, so kann mit “.” und “,” vorwärts und rückwärts durch die Vorschläge navigiert werden. Oftmal sind dies aber irrsinnig viele und man möchte Aptitude zu einer sinnvollen Lösung hin leiten. Beispielsweise soll das Paket amarok auf keinen Fall deinstalliert werden. Dazu bewegt man sich auf das entsprechende Paket, um im Info-Bereich Vorschläge anzuzeigen, wie mit diesem Paket verfahren werden soll. Mit “Tab” hüpft man in den Info-Bereich und kann dann mit den Pfeiltasten den Vorschlag, amarok zu deinstallieren, auswählen. Mit “r” (reject) teilen wir Aptitude mit, dass wir die Deinstallation nicht wollen.

Alternativ könnte man auch mit “a” (approve) sagen, dass man den betreffenden Vorschlag auf jeden Fall anwenden will. Im nächsten Lösungsvorschlag, den Aptitude macht, werden die Rejects und Approvals dann berücksichtigt.
Ist man mit einer Lösung zufrieden, so wird diese mit “!” angewandt, der Konfliktlöser schließt sich und man ist zurück in der Paketliste.
Dies war nun ein sehr einfaches Beispiel – meistens sind die Konflikte sehr viel kniffliger, aber mit Aptitude lässt sich immer eine gute Lösung finden. Die guten Eingriffsmöglichkeiten ins Verhalten des Konfliktlösers liefern meist nach spätestens zwei Vorschlägen den richtigen.
~ Anwendungsbeispiel: System aufräumen mit Aptitude ~
Nun sollte die Bedienung von Aptitude einigermaßen klar sein. Deshalb will ich noch ein bisschen auf die Features eingehen, die Aptitude so toll machen. Gegenüber anderen Paketmanagern ist es nämlich sehr einfach, damit mal die ganzen überflüssigen Pakete loszuwerden, die sich so im Laufe der Zeit auf dem System angesammelt haben. Dazu nutzen wir das “A”-Flag, mit dem sich Aptitude merkt, ob ein Programm absichtlich installiert ist oder nur, um die Abhängigkeiten eines anderen zu erfüllen. Im Laufe eines Debian-Lebens werden diese Flags oftmals von externen Tools verhunzt oder man hat die Pakete einmal selbst installiert und dann vergessen.
Nun generieren wir uns eine Liste aller Pakete, die mal auf ausdrücklichen Wunsch hin installiert wurden. Dazu öffnet man in Aptitude über das Menü eine “neue flache Paketansicht”. Auf diese wenden wir nun die Filterfunktion an: mit Druck auf “l” (locate) öffnet sich ein Eingabefeld, in das wir folgenden Inhalt tippen: “~i ?not(~M)”. Dies wählt alle Pakete aus, die installiert sind und nicht mit “A” (automatisch installiert) markiert sind. (Wer den Suchstring verstehen will, der sei auf den Artikel “aptitude search everything” verwiesen)

In dieser Liste sollten nun nur Pakete stehen, die man auch verwenden will (iceweasel, kde, etc…). Tauchen dort Sachen auf, die man nie explizit installieren wollte (z.B. Libraries), so markiert man diese als solche: mit einem Druck auf “M” (Shift+m, mark-auto). Rückgängig machen kann man die Markierung mit “m” (mark-no-auto). Manche markierten Pakete wird Aptitude dann sofort entfernen wollen, da diese von keinem “Nutz-Paket” mehr benötigt werden.
Vorsicht geboten ist jedoch bei Systempaketen wie sysvinit und login. Werden diese entfernt, ist das System kaputt. Aptitude warnt aber zum Glück vor dummen Aktionen.
Am Ende sollten nur noch nützliche Pakete in der Liste stehen, kein Ballast mehr. Mit einem abschließenden Druck auf “g” werden die überflüssigen Pakete dann entsorgt.
Bei mir waren das ca. 1,5 GByte nutzlose Pakete.
| Linux | aptitude, debian, konsole, paketverwaltung, terminal, tutorial, ubuntu |
sehr schönes tutorial :)
Danke für deine saubere Arbeit, hat mir den Einstieg in Aptitude vereinfacht!
danke! gute arbeit!
Vielen Dank fuer diesen Artikel, hat mir gerade sehr geholfen!