Zentraler Zugangspunkt

Komfortabel Pakete managen mit der Apt-Shell

Bei jeder Installation eines Debian-Grundsystems gelangt automatisch das Paket apt mit auf den Rechner (siehe Kasten "Der lange Weg zu Apt"). Dieses enthält die Tools Apt-cdrom, Apt-get und Apt-cache sowie die entsprechenden Konfigurationsdateien. Weitere Apt-Pakete installieren Sie bei Bedarf mittels Apt-get nach.

Die Konfigurationsdateien von Apt finden Sie unter /etc/apt. In der Datei /etc/apt/sources.list stehen die Bezugsquellen für die Pakete beziehungsweise die Paketdatenbanken. Jede Zeile der Datei enthält dabei eine Bezugsquelle, mit den vier Felder Paketart, Bezugsquelle, Distribution und Komponenten. So beschreibt etwa der Eintrag:

deb http://ftp.de.debian.org/debian/ squeeze main

eine Quelle für Debian-Binärpakete (deb), die Sie vom deutschen FTP-Server des Debian-Projekts beziehen, daraus die Distribution squeeze und davon wiederum nur die freien Komponenten aus dem Bereich main.

Die Datei /etc/apt/sources.lst entsteht während der Installation des Systems automatisch. Für den Alltagseinsatz können Sie auf Änderungen an dieser Konfiguration verzichten. Für weitere Pakete und Paketquellen bedarf die Datei hingegen einer näheren Inspektion. Je nachdem, welche Variante Sie zum Installieren des Grundsystems gewählt haben, stehen in der Datei nur die bislang verwendeten Paketquellen – also CD-ROMs oder Paket-Mirrors.

Der lange Weg zu Apt

In der ersten Hälfte der 1990er Jahre existierten noch recht wenige Distributionen. Zu den Pionieren zählen Yggdrasil, SLS, Slackware, Suse, Red Hat und Debian. Bis dahin gab es kaum distribustionsspezifische Pakete – der Anwender passte die Software nach den eigenen Bedürfnissen an und pflegte diese Version dann kontinuierlich weiter.

Ein einfaches Verwalten der Software war zu diesem Zeitpunkt noch nicht möglich, weil die Strukturen nicht erdacht und umgesetzt waren. Abhängigkeiten der Software ließen sich nicht automatisch auflösen. Der Benutzer musste einerseits wissen, welche Software einander bedingte, und andererseits, welche Versionen und Varianten sich miteinander vertrugen. Namensgleiche Dateien und Verzeichnisse waren problematisch. Die große Kunst bestand im Wissen, in welcher Reihenfolge es die Software zu installieren galt.

Aus diesem Wissen heraus startete 1993 das Debian-Projekt unter Ian Murdock mit einer revolutionären Idee: Dem Bereitstellen von kompilierten, sauber aufeinander abgestimmten Software-Paketen. Es folgte die Entwicklung von Dpkg, dem Debian-Paketsystem ("Debian Package"), das bis heute ein robuster Baustein der Systems geblieben ist. Das Paketformat kommt unter anderem bei Derivaten wie Ubuntu und Skolelinux sowie den beiden Live-Systemen Knoppix und Grml zum Einsatz.

Beim Einsatz von Dpkg besteht das Problem, dass die Abhängigkeiten zwischen den Paketen nicht automatisch aufgelöst werden. Dem Unix-Prinzip "ein Werkzeug für eine Aufgabe" folgend entstand Apt (Advanced Packaging Tool) als Oberfläche für Dpkg.

Apt steuert Dpkg an und löst die Abhängigkeiten der Pakete automatisch auf. Durch diesen Komfort erlangte das Tool sehr schnell große Popularität. Nach kurzer Zeit standen weitere Oberflächen für Apt bereit, so zum Beispiel Aptitude, das eine Kommandozeilenschnittstelle und eine Ncurses-Oberfläche bereitstellt, sowie Synaptic für das X-Window-System.

Paketquellen hinzufügen

Bereits während Installation und auch nachträglich können Sie weitere Paketquellen hinzufügen. Für CDs und DVDs nutzen Sie das Programm Apt-cdrom. Liegt bereits ein Datenträger im Laufwerk, setzen Sie als root folgendes Kommando zum Einbinden ab:

# apt-cdrom add

Das System liest den Datenträger und überprüft, ob es sich dabei um ein Installationsmedium für Debian handelt. Verläuft der Test erfolgreich, legt Apt-cdrom einen neuen Eintrag für den Datenträger in der Datei /etc/apt/sources.lst an.

Bei der Auswahl eines geeigneten Mirrors hilft das Programm Netselect-apt [1] aus dem gleichnamigen Paket weiter. Damit laden Sie die Liste aktueller Debian-Paketmirrors herunter. Nachdem Sie aus dieser Liste einen geeigneten Server ausgewählt haben, erstellt Netselect-apt dazu einen passenden Eintrag in der Datei /etc/apt/sources.list.

Mit dem Programm Netselect [2] prüfen Sie die Erreichbarkeit eines Paket-Mirrors. Netselect erwartet als Parameter eine Liste von URLs verschiedener Paket-Mirrors. Es vergleicht diese untereinander bezüglich der Erreichbarkeit und gibt eine Empfehlung in Form einer Punktzahl zurück, welcher Mirror als der geeignetste erscheint.

Je nach Netztopologie, Standort und Anbindung fällt das Ergebnis unterschiedlich aus. Im Beispiel aus Listing 1 macht ftp.debian.org mit 1654 Punkten das Rennen. Erfahrenere Benutzer öffnen die Konfigurationsdatei einfach in ihrem Lieblingstexteditor und passen diese Datei von Hand an.

Listing 1

# netselect -vv ftp.debian.org ftp.tu-chemnitz.de ftp.tu-dresden.de ftp.informatik.hu-berlin.de
  Running netselect to choose 1 out of 4 addresses.
  .............
  ftp.informatik.hu-berlin.de           9999 ms  30 hops    0% ok
  ftp.debian.org                         752 ms  12 hops  100% ok (10/10) [ 1654]
  ftp.tu-chemnitz.de                    9999 ms  30 hops    0% ok
  ftp.tu-dresden.de                     9999 ms  30 hops    0% ok
  1654 ftp.debian.org

Erste Schritte

Für ein besseres Verständnis der Apt-Befehle lohnt es sich, einen Blick auf die interaktive Shell Aptsh aus dem gleichnamigen Paket zu werfen. Falls noch nicht auf dem System vorhanden, installieren Sie es mittels apt-get install aptsh einfach nach. Danach rufen Sie die Aptsh über das gleichnamige Kommando auf.

Die Entwickler der Aptsh beschreiben diese als "nette Pseudo-Shell mit Auto-Vervollständigung und vereinfachtem Zugriff auf die Apt-Befehle". Die Parameter von Apt-get und Apt-cache stehen als einzelne Kommandos in der Aptsh bereit. Damit entfällt das wiederholte Aufrufen der vollständigen Apt-get und Apt-cache-Kommandos. Je nach Kommando ruft die Aptsh im Hintergrund die entsprechenden Apt-Befehle auf.

Nach dem Start der Aptsh fällt als erstes der bunte Prompt auf. Einen ersten Überblick zu den Kommandos erhalten Sie, indem Sie [Tab] zweimal drücken (Abbildung 1). Dabei nutzen Sie die Eigenschaft aus, dass die Aptsh Kommandos und Paketnamen komplettiert. Dieses automatische Vervollständigen kennen Sie schon aus der Bash.

Abbildung 1

Abbildung 1: Über das Autovervollständigen erhalten Sie sehr schnell einen Überblick über die integrierten Kommandos.

Für eine ausführliche Hilfe steht das Kommando help bereit. Die Aptsh zeigt daraufhin den Inhalt der englischsprachigen Manpage an. Ein ebenfalls englischsprachiges Handbuch mit vielen Beispielen verbirgt sich hinter help-howto. Um nur eine kurze Hilfe zu einem bestimmten Befehl zu erhalten, ergänzen Sie obigen Aufruf von help um das Kommando (Abbildung 2).

Abbildung 2

Abbildung 2: Die Aptsh zeigt auf Wunsch eine kurze Hilfe zu den Kommandos an.

Möchten Sie die Shell wieder verlassen, gelingt das über die Kommandos quit und exit, alternativ steht die Tastenkombination [Strg]+[D] bereit.

Umgang mit Paketen

Zu den am häufigsten genutzten Befehlen zählt zweifelsohne install Paketname. Er dient zum Installieren von Paketen (Abbildung 3). Ergänzen Sie den Paketnamen um ein Minuszeichen, entfernen Sie Pakete wieder aus dem System (siehe remove).

Abbildung 3

Abbildung 3: Die Installation des Midnight Commanders aus dem Paket mc gelingt mit dem Befehl.

Der Befehl update aktualisiert die interne Paketdatenbank auf der Basis der in /etc/apt/sources.lst angegebenen Paketquellen. Sie sollten update regelmäßig und vor allem vor jedem Benutzen von install und upgrade ausführen, um nicht mit veralteten Listen zu arbeiten.

Mit upgrade ersetzen Sie die installierten Pakete durch aktuellere Versionen der gleichen Distribution. Regelmäßig Upgrades empfehlen sich schon wegen der Sicherheitsaktualisierungen.

Mit dist-upgrade verhält sich ähnlich wie upgrade. Hier aktualisiert das System nicht nur einzelne Pakete, sondern die komplette Distribution. Diese Aktion fällt unter Umständen sehr umfangreich aus. Daher empfiehlt es sich, vorab ausreichend Zeit einzuplanen. Das Erneuern der Pakete führt häufig zu veränderten Abhängigkeiten, die weitere Korrekturen nach sich ziehen können.

Das Löschen von installierten Paketen gelingt mit den beiden Kommandos remove Paketname und purge Paketname. Bei ersterem entfernen Sie nur die entsprechende Installation, wobei die Konfigurationsdateien unberührt bleiben. Ihre mühevoll erarbeiteten Einstellungen bleiben so erhalten und stehen bei einer erneuten Installation wieder bereit.

Mit purge hingegen löschen Sie die entsprechenden Konfigurationsdateien mit. Bitte beachten Sie, dass Apt von sich aus überprüft, ob das Löschen dabei auch andere Pakete beeinträchtigt. Pakete, die ohne das von Ihnen benannte Paket nicht mehr funktionieren, schlägt es ebenfalls zum Entfernen vor. Besonders, wenn Sie Bibliotheken oder grundlegende Pakete wie den Linux-Kernel zum Löschen auswählen, fällt die Liste zu entfernender Pakete sehr lang aus.

Bibliotheken, die noch im System lagern, aber keinen Bezug mehr zu anderen installierten Paketen aufweisen und daher nutzlos Speicherplatz belegen, kennzeichnet die Paketverwaltung als Waisen ("orphans"). Mit dem Kommando orphans erhalten Sie die passende Liste, die Sie mit autoclean bereinigen. Das verwandte Kommando orphans-all erweitert die Liste um alle Programme, die "beziehungslos" sind, also nicht nur Bibliotheken.

Apt verwendet einen Zwischenspeicher unter /var/cache/apt/archives/, um die Pakete zu parken, die Sie von einem Mirror bezogen haben. Möchten Sie ein Paket installieren, prüft Apt vorab, ob die Datei bereits dort vorliegt, und nutzt gegebenenfalls diese zur Installation. Falls noch nicht vorhanden, bezieht Apt das entsprechende Paket aus einer Paketquelle und legt eine Kopie im Zwischenspeicher ab.

Je größer Ihre Experimentierfreude ausfällt, desto mehr nimmt der Umfang des Zwischenspeichers zu. Statt den Cache von Hand zu bereinigen, indem sie die Pakete im Verzeichnis Stück für Stück löschen, nutzen Sie einfach das Kommando clean. Dieses löscht alle Pakete aus dem Zwischenspeicher.

Das Kommando show Paketname liest aus der Datenbank die Informationen zum angegebenen Paket aus und zeigt diese an. Mit showpkg Paketname hingegen sehen Sie neben der verfügbaren Version alle Abhängigkeiten. Die Befehle depends Paketname und rdepends Paketname liefern nur die jeweiligen Abhängigkeiten separat. Mittels unmet Paketname zeigt Aptsh alle unerfüllten Abhängigkeiten sowie die jeweiligen Empfehlungen (Abbildung 4).

Abbildung 4

Abbildung 4: Da Apt intern die Abhängigkeiten zwischen den Paketen verwaltet, sehen Sie auf einen Blick, welche Pakete eine Installation noch mit ins System holt.

Meistens informativer Natur sind die statistischen Daten zur Paketdatenbank, die das Kommando stats zugänglich macht (Abbildung 5). Die Zahlen basieren auf den Paketen, über die das System Bescheid weiß, und weicht auf Ihrem Linux-System in der Regel von denen im Beispiel ab.

Abbildung 5

Abbildung 5: Auf Wunsch liefert die Paketdatenbank statistische Daten.

Eine vollständige Übersicht über alle Pakete in den angegebenen Paketquellen gibt das Kommando pkgnames aus. Die Liste aller Pakete, die sich gerade im Zwischenspeicher befinden, ermitteln Sie mit dump.

Da beide Ausgaben meist sehr ausführlich ausfallen, helfen die drei Shell-Tools Grep, Sort und Less, um das Wesentliche zu extrahieren und den Überblick zu behalten (Listing 2). Dabei fischt Grep nur solche Zeilen aus der Ausgabe von dump, die das Wort Package enthalten; Sort sortiert die Ausgabe aufsteigend und übergibt sie dann an den Pager Less.

Listing 2

aptsh> dump | grep "Package:" | sort | less
  Package: 2vcard
  Package: 3270-common
  Package: 3c5x9utils
  Package: 3dchess
  Package: 3depict
  ...
aptsh>

Mit dem Kommando search starten Sie eine Volltextsuche in der Paketdatenbank über die Paketnamen und deren Beschreibungen. Die Aptsh versteht auch find anstatt von search. Der Beitrag "Ordnung halten im Paketezoo" [3] beschäftigt sich ausführlich mit diesem Thema.

Als weitere Befehle, die Details zu einem Paket ausgeben, bietet die Aptsh neben madison auch noch dotty an. Ersterer zeigt die Versionen eines Programms tabellarisch an, welche die ausgewählten Quellen anbieten; Letzterer generiert einen Graphen im Dot-Format, der die Abhängigkeiten eines Pakets nachzeichnet.

Für die Liebhaber des Veterans Dselect sind die Kommandos dumpavail und dselect-upgrade interessant: Das erste gibt nur die Paketliste aus, das zweite aktualisiert die Dselect-Datenbank.

Aptsh-spezifische Befehle

Die Apt-Shell verfügt über eigene Kommandos, zu denen es kaum Pendants bei Apt-get und Apt-cache gibt. Mit ls Muster und rls Muster stöbern Sie in den Quellen nach dem angegebenen Muster. Das r in rls steht für die Unterstützung regulärer Ausdrücke im Suchmuster (Abbildung 6).

Abbildung 6

Abbildung 6: Durch reguläre Ausdrücke reduzieren Sie das Suchergebnis geschickt auf die gewünschten Einträge.

Für eine kurze Information zu einem Paket rufen Sie das Kommando whatis Paketname auf. Das gibt die kurze Beschreibung aus der Control-Datei des Debian-Pakets aus. Abbildung 7 zeigt die Ausgabe für die Pakete Dpkg, Aptitude, Xara-gtk und Packagesearch.

Abbildung 7

Abbildung 7: Kurzinformationen zu den ausgewählten Paketen helfen bei der schnellen Auswahl von Software.

Das Aptsh-Kommando listfiles Paketname entspricht dem Kommando dpkg -L Paketname (oder dpkg --listfiles Paketname). Darüber erhalten Sie eine Auflistung aller Dateien, die in dem bezeichneten Debian-Paket enthalten sind (Abbildung 8).

Abbildung 8

Abbildung 8: Was verbirgt sich in einem Paket? Das Kommando listfiles holt es ans Licht.

Auf die Frage, welches Paket eine bestimmte Datei enthält, gibt das Kommando whichpkg Dateiname eine Antwort. Es entspricht dem Aufruf von apt-file search Dateiname, durchsucht die einzelnen Pakete und liefert als Ergebnis eine Liste der Pakete zurück. Abbildung 9 zeigt das Suchergebnis für den schlanken PDF-Betrachter Mupdf – die beiden Pakete mupdf und mupdf-tools.

Abbildung 9

Abbildung 9: Bei der Suche nach bestimmten Dateien in einem Paket unterstützt Sie die Apt-Shell mit dem Befehl whichpkg.

Falls Sie weder Kommandozeile noch Aptsh mögen, stehen noch andere Programme zum Verwalten der Pakete bereit. Dazu zählen Aptitude, Synaptic, Xara und Packagesearch. Während sich Aptitude im Terminal und auf kleineren Maschinen wohlfühlt, setzen die drei letztgenannten ein funktionierendes X-Window-System und deutlich mehr verfügbare Ressourcen voraus.

Fazit

Mit den Werkzeugen von Apt-get und Apt-cache können Sie das gesamte Debian-basierte System installieren und stets zuverlässig auf dem aktuellen Stand halten. Die Apt-Shell vereinfacht das Bedienen der Werkzeuge. Wenn Sie nähere Informationen zum Inhalt der Pakete haben möchten, ist Apt-file das Richtige.

Verwenden Sie kein Debian und auch keines seiner Derivate, brauchen Sie trotzdem nicht auf die Vorteile von Apt zu verzichten: Diverse Portierungen stehen bereit, darunter Apt-rpm [4] und sogar Apt für Windows [5]

Infos

[1] Paket Netselect-apt: http://packages.debian.org/squeeze/netselect-apt

[2] Paket Netselect: http://packages.debian.org/squeeze/netselect

[3] Pakete finden mit Debtags: Frank Hofmann, "Dschungelführer", LU 06/2012, S. 22, http://www.linux-community.de/25926

[4] Apt-rpm: http://apt-rpm.org

[5] Apt für Windows: http://code.google.com/p/apt-windows/

Der Autor

Thomas Winde bietet als selbständiger Unternehmer Ausflugsfahrten an und blickt daneben auf einen langjährige Erfahrung als Linux-Anwender zurück. Als Mitorganisator der Chemnitzer Linux-Tage ist er für das Einsteigerforum verantwortlich und hält auf verschiedenen Veranstaltungen Vorträge für Einsteiger.

Frank Hofmann hat Informatik an der Technischen Universität Chemnitz studiert und arbeitet derzeit in Berlin im Büro 2.0, einem Open-Source Experten-Netzwerk, als Dienstleister mit Spezialisierung auf Druck und Satz. Er ist Mitgründer des Schulungsunternehmens Wizards of FOSS und koordiniert seit 2008 koordiniert das Regionaltreffen der Linux User Groups aus der Region Berlin-Brandenburg.

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare