Apt-Get und Aptitude im Einsatz

Aus LinuxUser 06/2013

Apt-Get und Aptitude im Einsatz

© Walter Groesel, sxc.hu

Paarweise

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.

Beim Aufräumen, Aktualisieren und Einrichten von Software auf einem Debian-basierten System übernehmen Tools wie Apt-get und Aptitude das Auflösen von Abhängigkeiten sowie das automatische Entfernen von nicht mehr benötigten Programmen. Dabei greifen sie auf die Mechanismen des Paketmanagements zurück, das umfangreiche Operationen erlaubt.

Die einfachen Arbeitsschritte (siehe Kasten “Grundlagen”) gehen dabei leicht von der Hand. Mit etwas Know-how schöpfen Sie zudem das komplette Potenzial der Tools aus und erledigen so schnell und komfortabel selbst komplexe Aufgaben.

Grundlagen

Teil 1 des Workshops [1] zeigte, wie sich Apt und Aptitude in die verschiedenen Ebenen der Debian-Paketverwaltung einordnen, und stellte die recht ähnlichen Optionen und Parameter beider Programme mit ihren jeweiligen Feinheiten gegenüber.

In diesem Teil stehen die Möglichkeiten zur Konfiguration und insbesondere deren effektiver Einsatz im Fokus. Apt punktet dabei mit Geschwindigkeit; Aptitude glänzt bei Installation und Entfernen von Paketen in einem Schritt sowie der geschickten Auswahl von Paketen über Suchmuster.

Standard-Einstellungen

Apt und Aptitude erhalten in der Regel durch die Maintainer der Distributionen eine grundlegende Konfiguration. Diese spielte sich in der Vergangenheit in zwei Dateien im Verzeichnis /etc/apt ab. So regelt /etc/apt/apt.conf das Verhalten von Apt und Aptitude systemweit [2], die Datei /etc/apt/preferences legt Prioritäten für Pakete und Paketgruppen fest. Beide Dateien gelten auf aktuellen Systemen als optional.

Mit der Zeit modularisierten die Entwickler die Konfiguration des Apt-Systems Stück für Stück. Seit 2001 verteilten sie die Konfigurationsdateien auf zwei separate Verzeichnisse, die jeweils den selben Namen tragen wie die früheren Dateien, gefolgt von einem .d [3].

Auf /etc/apt/apt.conf.d/ folgten 2009 mit Version 0.7.22 der Software – also zwischen 0.7.20.2 (in “Lenny”) und 0.8.10.3 (in “Squeeze”) – /etc/apt/preferences.d/ und 2010 /etc/apt/trusted.gpg.d/. Diese Verzeichnisse sollen der weiteren Priorisierung von Paketen und Paketgruppen dienen sowie zusätzliche Schlüsselring-Dateien aufnehmen, wie die GPG-Schlüssel zum Verifizieren von Backports.

Diese Konstruktion ermöglicht den Maintainern von Software, durch eigene Konfigurationsdateien sicherzustellen, dass vor oder nach der Installation der Programme durch Apt oder Aptitude zusätzliche Vorgänge ablaufen. Alle Programme, die auf Apt aufbauen, nutzen die Dateien unter /etc/apt/ und verwenden ein identisches Dateiformat, das an Run-parts [4] erinnert. Dateien in diesen Verzeichnissen müssen bestimmten Namenskonventionen folgen. So ignoriert Apt Dateien in /etc/apt/sources.list.d/, denen die Endung .list fehlt.

Zusätzlich legen einige Programme (insbesondere Aptitude) Konfigurationsdateien an weiteren Stellen ab. So speichert Aptitude unter /usr/share/aptitude/aptitude-defaults seine eigenen systemweiten Voreinstellungen, die Apt ignoriert [5].

Ändern Sie Einstellungen in der Curses-basierten Oberfläche von Aptitude, so landen diese Parameter in der Datei .aptitude/config in Ihrem Home-Verzeichnis und gelten nur für Sie. Um die Änderungen systemweit einzustellen, übertragen Sie die Inhalte als Benutzer root von .aptitude/config nach /etc/apt/apt.conf oder in eine neue Datei im Verzeichnis /etc/apt/apt.conf.d/.

Nach einer Standardinstallation von CD oder DVD existieren in /etc/apt/apt.conf.d/ vier Dateien, deren Namen mit einer zweistelligen Ziffernfolge beginnen (siehe Tabelle “Dateien zur Apt-Konfiguration”). Apt arbeitet diese in aufsteigender Reihenfolge durch [6], wobei die Ziffern am Anfang des Namens zum Sortieren dienen. Der Rest des Dateinamens lässt sich frei wählen, entspricht aber in der Regel dem Namen des Pakets, aus dem die Datei stammt.

Dateien zur Apt-Konfiguration

Datei Angelegt von Funktion
00trustcdrom Installation Liste vertrauenswürdiger Quellen
01autoremove Paket apt Liste der Pakete, mit Auskunft, ob das System diese automatisch entfernen darf
50unattended-upgrades Paket unattended-upgrades Liste der Pakete, die das System eigenständig aktualisieren darf
70debconf Paket debconf Informationen über die Aktionen vor und nach der Installation eines Pakets mit DPKG, die verwendete Version (Debian-Release), die Größe des Paket-Cache sowie die Reaktionszeit einer Paketquelle

Apt ignoriert Dateien, deren Namen auf .disabled oder eine Tilde (~) enden. Bei Letzteren handelt es sich um Backup-Dateien von Editoren. Ändert Dpkg Konfigurationsdateien, so legt es ebenfalls Kopien an, die das Verhalten von Apt jedoch nicht beeinflussen.

Mit welcher Konfiguration Apt und Aptitude tatsächlich agieren, erfahren Sie mit Hilfe des Programms apt-config aus dem Apt-Paket. Rufen Sie es mit der Option dump auf, dann erhalten Sie eine vollständige Übersicht aller gesetzten Werte (Abbildung 1). Möchten Sie die Konfiguration ergänzen, fügen Sie am besten ein passendes Fragment im Verzeichnis /etc/apt/apt.conf.d/ hinzu.

Abbildung 1: Mithilfe des Kommandos <code srcset=

apt-config sehen Sie die aktuellen Voreinstellungen im Überblick.” width=”300″ height=”248″ /> Abbildung 1: Mithilfe des Kommandos apt-config sehen Sie die aktuellen Voreinstellungen im Überblick.

Auf Einzelplatzsystemen können Sie in aller Regel auf das Anpassen der Apt-Konfiguration verzichten. Interessant wird es, wenn Sie trotz Vorliegens aktuellerer Pakete einen bestehenden Software-Stand beibehalten wollen oder bestimmte Pakete von der Installation ausschließen möchten. Ähnliches gilt für die automatische Installation empfohlener Pakete oder den Fall, dass der Netzzugang nur über einen Proxy-Server funktioniert [7],[8],[9].

Dass zwischen Apt und Aptitude weitere subtile Unterschiede bestehen, verdeutlicht unter anderem das Verhalten beim Entfernen “verwaister” Pakete. Diese entstehen, wenn der Paketmanager bei einer Deinstallation nicht alle Abhängigkeiten löscht, die nur für das entfernte Paket notwendig waren, aber in keinem Bezug mehr zur weiterhin installierten Software stehen.

Apt-Get weist in einem solchen Fall lediglich darauf hin, dass verwaiste Pakete existieren, während Aptitude diese automatisch auch löscht. Die dazugehörigen Kommandozeilen-Optionen und Einstellungen für die Konfiguration finden Sie in der Tabelle “Automatisches Entfernen”.

Automatisches Entfernen

Funktion Apt-Get Aptitude
Beim Entfernen apt-get --auto-remove Paket aptitude remove Paket
Abhängigkeiten nicht automatisch entfernen apt-get remove Paket aptitude -o Aptitude::Delete-Unused=false remove Paket
Konfigurationsoptionen APT::Get::AutomaticRemove Aptitude::Delete-Unused
Vorgabewert false true

In einem Schritt

Apt-Get bietet die Möglichkeit, die Auswirkungen der beiden Unterkommandos install und remove in deren jeweiliges Gegenteil zu verkehren. Im Aufruf von Apt-Get hängen Sie dazu an die einzelnen Paketnamen ein Plus- oder Minus-Zeichen an. So entfernen Sie mit apt-get install einzelne Pakete, anstatt sie zu installieren. Das erweist sich etwa dann als hilfreich, wenn Sie ein Paket einrichten, das alternative Abhängigkeiten aufweist, von denen Sie eine bestimmte ausschließen möchten.

So benötigt das Paket stumpwm des in Lisp geschriebenen Window-Managers Stump [10] einen Lisp-Interpreter, legt sich dabei aber nicht auf einen bestimmten fest. Daher genügt eines der drei Pakete clisp-module-clx, cl-clx-sbcl oder cmucl-source. Haben Sie keines davon installiert, wählt Apt-Get im Normalfall das erste Paket aus. Wünschen Sie das nicht, wählen Sie es mit dem nachfolgendem Befehl explizit ab. Daraufhin nimmt Apt-Get das zweite aus der Liste:

# apt-get install stumpwm clisp-module-clx

Aptitude bietet in dieser Hinsicht noch wesentlich mehr Möglichkeiten. Einerseits erlaubt es solche Korrekturen auch bei anderen Unterkommandos, wie full-upgrade, safe-upgrade, markauto oder hold. Andererseits kennt es noch wesentlich mehr Aktionen, auf die Sie ebenfalls über “Anhängsel” an den Namen des Pakets Zugriff haben (siehe Tabelle “Aktionen in Aptitude”).

Aktionen in Aptitude

Zeichen Effekt
+ Paket installieren
+M Paket installieren und als automatisch installiert markieren
- Paket entfernen
_ Paket und Konfigurationen entfernen (“purge”)
: Paket beibehalten (also beispielsweise nicht aktualisieren)
= Paket auf “hold” setzen
&M Paket als automatisch installiert markieren
&m Paket als nicht automatisch installiert markieren
&BD Bau-Abhängigkeiten des Pakets erfüllen

Das Beispiel in Listing 1 demonstriert diese Möglichkeiten ausführlich: Aptitude aktualisiert in einem Aufruf das Paket lintian, installiert dabei gleichzeitig das Paket htop sowie die noch fehlenden Bau-Abhängigkeiten für htop (in diesem Fall libncurses5-dev), entfernt das Paket tasksel samt nicht benötigter Abhängigkeiten, und setzt das Paket ccal auf “automatisch installiert”.

Daraufhin entfernt der Paketmanager Ccal, da kein anderes Paket davon abhängt. Alle weiteren, nicht angegebenen Pakete, bleiben auf dem derzeitigen Stand, auch wenn eine neuere Version bereitsteht: aptitude full-upgrade bearbeitet nur die angegebenen Pakete.

Listing 1

# aptitude full-upgrade lintian htop+ 'htop&BD' tasksel- 'ccal&M'
The following NEW packages will be installed:
  htop libncurses5-dev
The following packages will be UPGRADED:
  lintian
The following packages will be KEPT BACK:
  iceweasel libmozjs10d xulrunner-10.0
The following packages will be REMOVED:
  ccal{a} tasksel tasksel-data{a}
1 packages upgraded, 2 newly installed, 3 to remove and 3 not upgraded.
[...]

Filter und Suchmuster

Aptitude stellt umfangreiche Optionen für die Recherche nach Paketen bereit. Sowohl in der interaktiven Oberfläche als auch auf der Kommandozeile punktet es dabei mit mächtigen Filtern und Suchmustern. Im Curses-Interface erreichen Sie die Eingabemaske für die Suche über [Umschalt]+[**7**] (den Schrägstrich). Im Aufruf auf der Kommandozeile heißt das Unterkommando search gefolgt vom Suchbegriff.

Bei beiden erlaubt Aptitude nicht nur Bestandteile des Paketnamens und reguläre Ausdrücke als Eingabe, sondern auch spezielle Suchmuster. Dazu zählen ~i für alle installierten Pakete, ~M für alle automatisch durch Abhängigkeiten installierten Pakete oder ?description(Suchbegriff) für die Suche in den Beschreibungen der Pakete (Abbildung 2).

Abbildung 2: Aptitude hilft mit Suchmuster und Filter, den riesigen Bestand an Paketen effektiv nach dem Gewünschten zu durchforsten.

Abbildung 2: Aptitude hilft mit Suchmuster und Filter, den riesigen Bestand an Paketen effektiv nach dem Gewünschten zu durchforsten.

Die meisten Suchmuster gibt es in einer Kurz- und Langform. Erstere beginnen mit einer Tilde (~), Letztere mit einem Fragezeichen. Eine Auswahl an Suchmustern zeigt die Tabelle “Aptitude-Suchmuster”. Eine aktuelle, vollständige Liste auf Englisch findet sich online [11] und im Paket aptitude-doc-en. Bislang wurde die Dokumentation noch nicht ins Deutsche übersetzt, liegt aber unter anderem in Französisch, Italienisch und Spanisch vor [12].

Aptitude-Suchmuster

Langform Kurzform Beschreibung
?not(Muster) !Suchmuster Pakete, auf die das Suchmuster nicht zutrifft
?and(Muster1, Muster2) Muster1Muster2 Pakete, auf die beide Suchmuster zutreffen
?or(Muster1, Muster2) Muster1 | Muster2 Pakete, auf die eines der beiden Suchmuster zutrifft
?automatic ~M Pakete, die als automatisch installiert markiert sind
?broken ~b Pakete mit nicht erfüllten Abhängigkeiten
?config-files ~c pakete, die entfernt wurden, von denen aber noch Konfigurationsdateien existieren
?description(Text) ~dText Pakete, deren Beschreibung den Suchtext enthält
?essential ~E Pakete, die als essenziell markiert sind
?garbage ~g Pakete, die zum automatischen Entfernen anstehen
?obsolete ~o Installierte Pakete, die online nicht bereit stehen (lokal / aus dem Archiv entfernt)
?provides(Muster) ~PMuster Pakete, die ein virtuelles Paket bereitstellen, auf welches das Suchmuster zutrifft
?section(Sektion) ~sSektion Pakete, deren Eintrag für die Sektion den Suchtext enthält
?upgradable ~U Pakete, für die eine neuere Version bereit steht

Diese Muster helfen auch, die Anzeige von Listen in der Textoberfläche und bei den Aufrufen über die Kommandozeile zu filtern. Bei Ersterem stellen Sie einen solchen Filter über [L] ein. Ähnlich wie bei der Suche erscheint ein Eingabefeld, in dem Sie das Suchmuster eintragen. Das Programm gibt nur diejenigen Software-Pakete aus, auf die das gesuchte Muster (in Abbildung 3: o[kc]ular) passt. Damit finden Sie treffsicher jedes Paket, selbst wenn Ihnen die korrekte Schreibweise von dessen Namen entfallen ist.

Abbildung 3: Eine Suche nach dem PDF-Viewer Okular über einen Filter mit regulärem Ausdruck.

Abbildung 3: Eine Suche nach dem PDF-Viewer Okular über einen Filter mit regulärem Ausdruck.

Bei den Aufrufen über die Kommandozeile erweisen sich die Suchmuster ebenfalls als hilfreich. Der folgende Befehl markiert alle Pakete als automatisch installiert, deren Namen mit lib beginnt:

# aptitude markauto '~n^lib'

Schließlich sollten im Normalfall nur Software-Bibliotheken (“libraries”) installiert sein, die Sie auch verwenden. Einen unangenehmen Nebeneffekt hat der Aufruf jedoch: Dieses Beispiel trifft auf LibreOffice und sowie nahezu alle Pakete mit Header-Dateien zu (der Name solcher Pakete lautet typischerweise libName-dev) und entfernt die Pakete mit. Das ist nicht im Sinne des Erfinders.

Etwas präziser funktioniert es, wenn Sie statt des Paketnamens die Sektion als Suchmuster verwenden. Der folgende Befehl markiert alle Pakete aus den Sektionen libs (Software-Bibliotheken) und oldlibs (veraltete Software-Bibliotheken, Übergangspakete) als “automatisch installiert”:

# aptitude markauto '~slibs'

Ein explizites ~soldlibs ist nicht notwendig, da Aptitude das Suchmuster auch als Teil des Sektionsnamens erkennt. Einzelne Ausnahmen (etwa falls eine Bibliothek per Abhängigkeit ins System gelangt ist) geben Sie durch Korrekturen für die Aktion an (siehe Tabelle “Aktionen in Aptitude”). Nach obigem Befehl würde Aptitude alle Bibliotheken entfernen von denen keine anderen Paketen abhängen – mit Ausnahme des Pakets libtclcl1, das als “nicht-automatisch installiert” markiert und damit installiert bleibt.

aptitude markauto '~slibs' 'libtclcl1&m'

Einen weiteren typischen Einsatzzweck stellt das Entfernen der Konfigurations- und Anwendungsdaten (purge) bereits gelöschter (remove), aber noch konfigurierten Paketen dar:

# aptitude purge '~c'

Hier gilt allerdings die selbe Warnung wie für die Option --purge-unused: Bei unbedachtem Einsatz führt diese Aktion zum Verlust von eventuell noch benötigten Daten. So gibt es bei den Paketen für den MySQL-Server in Debian eine Einstellung, die festlegt, ob das System Datenbanken bei einem purge löscht. In jedem Fall empfiehlt sich vor dem Ausführen des Kommandos ein zweiter Blick.

Aptitude erweist sich als deutlich komplexer und bietet wesentlich mehr Möglichkeiten zum Management von Paketen. Dies bringt aber auch Nachteile mit sich. So braucht das Programm zum Starten und Beenden wesentlich mehr Zeit als Apt-Get: Beim Start liest es seine zusätzliche Datenbank für den Status der Pakete ein, beim Beenden speichert es diese wieder auf die Festplatte. Das passiert sogar in Fällen, in denen es nicht notwendig wäre [13].

Fazit

Möchten Sie eine fein abgestufte, aber dennoch effiziente Kontrolle über die von Ihnen genutzten Pakete, bietet das mächtige Aptitude weitaus mehr an Möglichkeiten als Apt-Get. Es setzt allerdings auch etwas mehr Wissen voraus, während Apt-Get zur Not aus dem Kaltstart loslegt. Apt-Get stellt eventuell dann die bessere Wahl dar, wenn Sie potenziellen “Nebenwirkungen” vorgemerkter Aktionen vorbeugen möchten.

Haben Sie Aptitudes Text-Modus-Oberfläche mit ihren vielfältigen Möglichkeiten zur Vorschau und Filterung erst einmal schätzen gelernt, spricht nichts dagegen, vor jedem Lauf kurz aptitude keep-all aufrufen, um alle Vormerkungen zu verwerfen.

Schreiben Sie Installationsanleitungen für ein Debian-Pakete oder verfassen einen Artikel, dann sollten Sie grundsätzlich Apt-Get in allen Beispielen verwenden. Überlassen Sie hier besser dem Anwender die Entscheidung, ob er Apt-Get oder Aptitude nutzen will: Als Autor können Sie mögliche Nebenwirkungen bei der Nutzung von Aptitude nicht vorhersehen. 

Glossar

Backports

Aktualisierte, fehlerbereinigte oder funktional erweiterte Pakete, welche die Entwickler für ein älteres Debian-Release und dessen Entwicklungsstand angepasst haben.

Infos

[1] Workshop Apt und Aptitude, Teil 1: Axel Beckert, Frank Hofmann, “Ungleiche Geschwister”, LU  04/2013, S. 90, https://www.linux-community.de/27663

[2] Konfiguration in /etc/apt/apt.conf: Frank Ronneburg “Debian-Anwenderhandbuch”, http://debiananwenderhandbuch.de/apt.conf.html

[3] Modulare Konfiguration in /etc/apt/apt.conf.d/: http://wiki.debian.org/AptConf

[4] Manpage zu Run-parts: http://manpages.debian.net/cgi-bin/man.cgi?query=run-parts

[5] Referenz zur Aptitude-Konfigurationsdatei (engl.): http://people.debian.org/~abe/aptitude/en/ch02s05s05.html

[6] Kommandos von Aptitude und Apt-get: http://debian-handbook.info/browse/stable/sect.apt-get.html

[7] Pakete verwalten hinter einem Proxy: http://wiki.itadmins.net/doku.php?id=debian:apt-get_proxy

[8] Apt über einen Proxy betreiben: http://www.marcusmoeller.ch/tutorials/apt-uber-einen-proxyserver-betreiben.html

[9] Ubuntu-Forum: http://askubuntu.com/questions/196059/how-to-modify-settings-in-apt-conf-file-that-no-longer-exists-in-12-04

[10] Stump Window Manager: http://stumpwm.nongnu.org/

[11] Aptitude-Suchmuster-Referenz (engl.): http://people.debian.org/~abe/aptitude/en/ch02s04s05.html

[12] Aptitude-Handbuch: http://people.debian.org/~abe/aptitude/

[13] Antwort von Daniel Hartwig zu Debian-Bug #693144: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=693144#32

[] Die Autoren bedanken sich bei Lars Lingner für seine Anregungen und Kritik im Vorfeld dieses Artikels.

Der Autor

Axel Beckert (http://noone.org/abe/) arbeitet als Linux-Systemadministrator an der ETH Zürich, sitzt im Vorstand der Linux-User-Group Switzerland und ist Mitglied des Debian-Projekts. Er fungiert seit der Neuformierung des Aptitude-Teams als Mentor, Versuchskaninchen und Paketsponsor.

Frank Hofmann (http://www.efho.de/) arbeitet in Berlin als Dienstleister für Satz und Druck. Seit 2008 koordiniert er das Regionaltreffen der Linux-User-Groups aus der Region Berlin-Brandenburg.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 06/2013 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
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben