Home / LinuxUser / 2013 / 04 / Apt-get und Aptitude (Teil 1)

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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

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

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").

Tip a friend    Druckansicht Bookmark and Share
Kommentare

4488 Hits
Wertung: 55 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...