AA_paket-robot_123rf-15967287_stylephotographs.jpg

© stylephotographs, 123RF

Dynamisches Duo

Apt-get und Aptitude (Teil 1)

19.03.2013
,
Die Paketmanager Apt-get und Aptitude gehören zum Standardrepertoire von Debian und dessen Derivaten. Welcher davon eignet sich wofür am besten?

Das Thema Paketverwaltung unter Debian bildete bereits einen Teil des Schwerpunkts von LinuxUser 06/2012. Neben der Paketklassifikation mit Debtags [1] und dem Selberbauen von Softwarepaketen mit Checkinstall rückte die Pflege des Softwarebestands mittels Apt-Pinning [2] sowie der Aptsh [3] in den Mittelpunkt. Die Basis der Verwaltung von Softwarepaketen aber bilden Dpkg und Apt.

Dpkg stellt die unterste Ebene der Paketverwaltung von Debian dar. Es ist verantwortlich für das Auspacken von DEB-Paketen und das Handhaben von aktualisierten Konfigurationsdateien. Es verhindert es außerdem, dass ein Paket unerwartet eine Datei aus einem anderen überschreibt.

Apt kümmert sich um alles, was mit Paketlisten und deren Auswertung zu tun hat – zum Beispiel das Herunterladen von Paketlisten, das automatische Auflösen von Paketabhängigkeiten oder das Herunterladen der Paketdateien. Apt besteht dazu aus mehreren Komponenten, einerseits den beiden Programmbibliotheken libapt-pkg und libapt-inst und andererseits aus diversen Kommandozeilenwerkzeugen, unter anderem Apt-get und Apt-cache.

Alle weiteren Programme wie Aptsh, Aptitude oder Synaptic setzen auf die Programmbibliotheken von Apt auf. Eine Ausnahme bildet Cupt [4], das deswegen hier auch außen vor bleibt.

Die Entwickler von Apt und Aptitude liefern sich eine Art Wettrennen, welches beider Projekte die wenigsten offenen Fehler-Reports [5] aufweist. Bei beiden Programmen hält sich das schon länger ungefähr die Waage.

Der offensichtlichste Unterschied zwischen den bisher erwähnten Werkzeugen ist zunächst rein optischer Natur. Sowohl Apt und Aptitude als auch die Aptsh nehmen Befehle über die Kommandozeile entgegen. Dabei folgt die Aptsh allerdings anderen Konzepten als Apt-get und Aptitude. Aptitude verfügt zusätzlich über eine Ncurses-basierte Benutzeroberfläche (Abbildung 1). Komplexe Aktionen steuern Sie bei Aptitude sowohl über die Textmodus-Oberfläche als auch mit Hilfe von Aufrufparametern.

Abbildung 1: Aptitudes Textmodus-Oberfläche zeigt hier eine Reihe von zur Aktualisierung vorgemerkten Paketen.

Kurze Zeit gab es auch eine GUI-Variante von Aptitude, die auf dem Gimp-Toolkit basierte. Sie erreichte jedoch nie die Qualität und Stabilität von Aptitudes Ncurses-Oberfläche – daher wird sie nicht mehr weiter gepflegt [6]. Für das Qt-Pendant Aptitude-Qt existiert zwar ebenfalls Quellcode, zur Veröffentlichung einer brauchbaren Variante hat es aber bisher nicht gereicht.

Synaptic bietet dagegen ausschließlich eine grafische Oberfläche und ist neben dem Software Center auf Ubuntu sehr beliebt.

Unterkommandos und Parameter

Im Folgenden stehen die Feinheiten zwischen Apt-get und Aptitude im Vordergrund. Sie lernen diese kennen und erfahren, wie Sie diese für sich nutzen können. Die erste Station bilden die Parameter auf der Kommandozeile.

Die Tabelle "Unterkommandos von Apt-get und Aptitude" stellt die Unterkommandos von Apt-get und Aptitude gegenüber. Viele der genannten Befehle kommen Ihnen sicherlich bekannt vor – sei es aus eigener Erfahrung oder aus dem Absolvieren eines Linux-Basis-Kurses. Sie sehen, dass etliche subtile Unterschiede bestehen, obwohl vielfach das jeweilige Unterkommando bei beiden Programmen den gleichen Namen trägt. Insbesondere gilt das für upgrade, safe-upgrade, dist-upgrade und full-upgrade, daher sind diese nochmals separat aufgeschlüsselt (siehe Kasten "Feine Unterschiede"). Weitergehende Informationen finden Sie im Aptitude-Handbuch [7] sowie in den Manpages von Apt-get [8] und Aptitude [9].

Unterkommandos von Apt-get und Aptitude

Aktion Apt-get Aptitude
Paketlisten aktualisieren update update
Pakete konservativ aktualisieren upgrade safe-upgrade
Alle Pakete aktualisieren dist-upgrade full-upgrade
Paket installieren install Paket install Paket
Paket nochmals installieren install --reinstall Paket reinstall Paket
Paket entfernen remove Paket remove Paket
Paket samt Konfigurationsdateien entfernen purge Paket purge Paket
Ungenutzte Pakete entfernen autoremove -
Paket beibehalten nicht vorhanden(1) hold Paket
Paketcache leeren (komplett) clean clean
Pakete ohne verfügbare Quellen löschen autoclean autoclean
Paketinformationen anzeigen show(2) show Paket
Warum ist ein Paket installiert?   why Paket
Warum ist ein Paket nicht installiert?   why-not Paket
Abhängigkeitsfehler zeigen check search '~b'
Paket suchen search(2) search Muster
Verfügbare Paketversionen zeigen policy(2) versions Paket
(1) per Apt-cache (auch aus dem Paket apt), (2) per dpkg-hold Paket

Feine Unterschiede

Die Unterkommandos full-upgrade und dist-upgrade unterscheiden sich (ohne Parameter) nur durch die unterschiedlichen Algorithmen zum Auflösen der Paketabhängigkeiten. Apt-get erlaubt es seit einiger Zeit sogar, diese auszutauschen [10].

Das Kommando apt-get upgrade aktualisiert alle Pakete, die aktualisiert werden können, ohne installierte Pakete zu entfernen oder nicht installierte einzurichten. Dagegen aktualisiert aptitude safe-upgrade alle Pakete, die sich aktualisieren lassen, ohne manuelle installierte zu entfernen. Die Option --no-new-installs bewirkt, dass sich aptitude safe-upgrade ähnlicher zu apt-get upgrade verhält.

Allerdings gibt es noch einen großen Unterschied zwischen apt-get upgrade/dist-upgrade und aptitude safe-/full-upgrade: Aptitudes Unterkommandos erlauben Paketnamen als zusätzliche Parameter. In diesem Fall versucht der Paketmanager, nur die angegebenen Pakete zu aktualisieren (upgrade), unter den durch das Unterkommando gegebenen Bedingungen.

Wohl gemerkt

Etwas im Verborgenen schlummert die Möglichkeit, mit Aptitude anstehende Aktionen nicht direkt auszuführen, sondern sie für später vorzumerken. Solche vorgemerkten Aktionen arbeitet die Software ab, sobald Sie zu einem späteren Zeitpunkt irgendeine andere Aktion per Aptitude anstoßen, wie etwa das Installieren, Entfernen oder Aktualisieren von Paketen.

In welcher Reihenfolge Aptitude die Vormerkungen abarbeitet, lässt sich nicht pauschal vorhersagen. Das hängt vor allem von den Abhängigkeiten der Pakete untereinander ab, die es bei den einzelnen Aktionen zu berücksichtigen gilt. Spätere Vormerkungen können frühere allerdings auch wieder revidieren.

Aptitude trägt die erhaltenen Vormerkungen in seiner eigenen Paketdatenbank ein (siehe Kasten "Aptitudes Status-Datenbank"). Pakete, die es zur Erfüllung von Abhängigkeiten vorgemerkt werden, kennzeichnet Aptitude als "automatisch installiert", angezeigt durch den Buchstaben A in der Benutzeroberfläche. Mittlerweile kann Apt ebenfalls mit dieser Markierung umgehen und setzt sie beim Installieren von Paketen via Apt-get analog. Entdeckt die Paketverwaltung bei einem Aufruf solche als automatisch installiert markierten Pakete, die aber von keinem anderen Paket benötigt werden, so weist es den Benutzer darauf hin. Aptitude hingegen lässt es in den Standard-Einstellungen gar nicht soweit kommen und entfernt die Pakete zusammen mit dem Ausführen der Aktion, die diese obsolet macht.

Aptitudes Status-Datenbank

Aptitude pflegt seine Zusatz-Informationen zu den Paketen in einer textbasierten Datenbank unter /var/lib/aptitude/pkgstates. Ein Eintrag für ein Paket besteht aus fünf Zeilen. Für das Paket debtree sieht er zum Beispiel so aus:

Package: debtree
Unseen: no
State: 1
Dselect-State: 1
Remove-Reason: 0

Dabei enthält Package enthält den Paketnamen. Unseen speichert, ob das Paket in Aptitudes Liste neuer Pakete auftaucht, weil es "noch nicht gesehen" wurde. State enthält den Paketstatus, wobei 1 für "installiert" steht, 2 für "beibehalten", 3 für "nicht installiert" und 4 für "entfernt (Konfigurationsdateien noch vorhanden)". Dselect-State zeigt an, ob Vormerkungen vorliegen. Remove-Reason schließlich speichert, falls das Paket automatisch entfernt wurde, den Grund dafür: Entweder wurde es schlicht nicht mehr gebraucht oder es traten Konflikte mit anderen Paketen auf.

Paket-Aktionen mit Aptitude nehmen Sie über die Kommandozeile oder in der interaktiven Textmodus-Oberfläche vor. In letzterer stellt praktisch jedes Markieren eines Paketes zum Installieren ([+]) oder Entfernen ([-]) ein Vormerken dar. Drücken Sie danach [G], gelangen Sie in der Standard-Konfiguration zur Vorschau der Vormerkungen. Drücken Sie nochmals [G], führt Aptitude die vorgemerkten Aktionen auch aus. Die Eingabe von [Q] beendet Aptitude, merkt sich aber die zuvor geplanten Paketaktionen für den nächsten Aufruf. Beenden Sie Aptitude dagegen mit [Strg]+[C], speichert es die Vormerkungen nicht.

Das gleiche Ergebnis erreichen Sie auf der Kommandozeile, indem Sie einem Aptitude-Aufruf die Option --schedule-only hinzufügen. Ein späteres aptitude install ohne weitere Parameter genügt dann, damit der Paketmanager alle vorgemerkten Aktionen ausführt (Listing 1).

Listing 1

# aptitude --schedule-only install htop
# aptitude --schedule-only remove tasksel
# aptitude install
The following NEW packages will be installed:
  htop
The following packages will be REMOVED:
  tasksel tasksel-data{a}
0 packages upgraded, 1 newly installed, 2 to remove and 0 not upgraded.

Oft ist es hilfreich, vor der Installation zu erfahren, welche Vormerkungen bereits getroffen wurden. Am einfachsten gelingt das, indem Sie die Simulation der Aktionen über den Schalter-s beziehungsweise --simulate aktivieren. Der vollständige Aufruf lautet dann aptitude install -s. Als Benutzer der Textmodus-Oberfläche wählen Sie zunächst das Paket mit [+] aus und drücken danach [G] für die Vorschau (Abbildung 2).

Abbildung 2: Aptitude zeigt das zur Aktualisierung ausgewählte Paket mysql-common. Mit einem Druck auf G lösen Sie die Aktualisierung des Pakets aus.

Um Vormerkungen wieder aufzuheben kennt Aptitude das Unterkommando keep-all, das dafür sorgt, dass der Paketmanager alle Vermerke über geplante Aktionen zurücksetzt. In der deutschsprachigen Version der Textmodus-Oberfläche heißt der entsprechende Eintrag im Aktionen-Menü Nicht abgeschlossene Aktionen abbrechen.

Möchten Sie stattdessen nur ein einziges Paket zurücksetzen, akzeptiert Aptitude das Unterkommando keep, beispielsweise aptitude --schedule-only keep tasksel. In der Textmodus-Oberfläche wählen Sie zunächst das Paket aus, und drücken dann als Pendant [Umschalt]+[.]. Um nur die letzten Vormerkungen zu löschen, drücken Sie in der Textmodus-Oberfläche [Strg]+[U] ("undo").

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Apt-Get und Aptitude im Einsatz
    Das Installieren und Entfernen von Software gehört für jeden Paketmanager zur Pflichtübung. Wer sein Debian-System aber richtig warten will, braucht Profi-Tools wie Apt-get und Aptitude.
  • Aptitude: Software-Installation unter Debian
    Debian besteht in der aktuellen Version aus rund 9000 Paketen, in der nächsten werden es schon über 14000 sein. Aptitude verschafft Übersicht und hilft bei der Suche nach bestimmter Software.
  • Debian-Pakete verwalten mit dem Smart Package Manager
    Hinter SmartPM verbirgt sich ein kleiner Werkzeugkasten für das Paketmanagement, der alltägliche Aufgaben einfach macht, aber Profis die volle Kontrolle ermöglicht.
  • Urgestein
    Schon 1993 schuf Debian mit Dpkg ein solide Basis zur einfachen Paketverwaltung. Deren flexible Methoden und Konzepte bewähren sich bis heute – auch im Debian-Ableger Ubuntu.
  • Aptitude 0.5.2 veröffentlicht
    Daniel Burrows hat eine neue Version des Standard-Paketmanagers von Debian veröffentlicht. Sie bringt vor allem beim Auflösen von Abhängigkeiten Performancevorteile.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.