6.2. Für die Kommandozeile

6.2.1. dpkg

dpkg ist das Debian-Programm für grundlegende Paketoperationen und bildet in Bezug auf Funktionsumfang und Handhabung das Äquivalent zu rpm auf RedHat-basierten Linuxsystemen. Es kürzt den Namen Debian GNU/Linux package manager ab. Im Anhang unter ``Kommandos zur Paketverwaltung im Vergleich`` (siehe Kapitel 51, Kommandos zur Paketverwaltung im Vergleich) stellen wir die verschiedenen Schalter zu den beiden Kommandos dpkg und rpm gegenüber.

dpkg agiert nur mit Paketen, die schon auf ihrem Linuxsystem lokal vorliegen — entweder als deb-Datei in einem Verzeichnis oder als bereits installiertes Paket. dpkg kann keine Pakete von einem Paketmirror beziehen.

Sie erreichen dpkg ausschließlich über die Kommandozeile und starten es mit diversen Schaltern und Optionen. Die wichtigsten Parameter für den Gebrauch im Alltag sind[13]:

Mit dpkg zeigen Sie die installierten Pakete und deren Zustand an, suchen nach Paketinhalten und konfigurieren im Bedarfsfall ein Paket nach.

Für alle anderen Aktionen sind hingegen die Werkzeuge apt-get (Abschnitt 6.2.2, „APT“), apt-cache, aptitude (Abschnitt 6.3.2, „aptitude) und apt-file oder die Benutzeroberflächen via Ncurses oder GTK besser geeignet (siehe Abschnitt 6.3, „ncurses-basierte Programme“ und Abschnitt 6.4, „GUI zur Paketverwaltung“). Diese fassen viele Einzelschritte von dpkg zusammen und vereinfachen Ihnen die Wartung ihres Systems erheblich.

6.2.2. APT

Überblick

APT ist das Debian-Programm für etwas komplexere Paketoperationen und steht als Abkürzung für Advanced Packaging Tool. Sie finden es im Paket apt [Debian-Paket-apt], welches zur Standardinstallation Ihres Debian-Systems gehört.

APT ist für den Alltagseinsatz konzipiert. Es eignet sich sowohl für Recherchezwecke (Abfrage von Status- und Zustandsinformationen), als auch für die Installation und Aktualisierung einzelner Pakete sowie gesamter Paketstrukturen (Veröffentlichungen).

Im Gegensatz zu aptitude (siehe Abschnitt 6.3.2, „aptitude) ist es deutlich weniger anspruchsvoll. Das betrifft die Anforderungen an die Hardware und insbesondere den benötigten Speicher für die Ausführung. APT hat zudem eine deutlich höhere Ausführungsgeschwindigkeit als aptitude.

APT ist sehr mächtig und kann mit Paketen umgehen, die sich entweder bereits lokal auf Ihrem System befinden, oder noch auf einem Paketmirror vorliegen. Es kombiniert i.d.R. mehrere Einzelaktionen von dpkg. Es greift dabei aber nicht direkt auf dpkg zurück, sondern kapselt dafür die Aufrufe mit Hilfe der Bibliothek libapt-pkg (siehe dazu „APT und Bibliotheken“ unter Kapitel 5, APT und Bibliotheken).

Komponenten und Funktionen

APT umfasst ausschließlich Programme für die Kommandozeile. Dazu zählen apt-cache, apt-cdrom (siehe Abschnitt 3.8, „Physische Installationsmedien mit apt-cdrom einbinden“), apt-config zur Konfiguration von APT (siehe Kapitel 10, APT und aptitude auf die eigenen Bedürfnisse anpassen), apt-get, apt-key (siehe Abschnitt 3.12, „Paketquelle auf Echtheit überprüfen“) und apt-mark (siehe Abschnitt 8.4.6, „Anfragen mit apt-mark). Jedes der genannten Programme verfügt über umfangreiche Unterkommandos, die Sie wiederum mit diversen Optionen und Schaltern kombinieren können. Die gebräuchlichsten Aktionen für den Alltag sind:

Nachfolgend geben wir Ihnen eine Übersicht zu allen Unterkommandos, die die einzelnen APT-Werkzeuge bereithalten. Neben dem jeweiligen Unterkommando finden Sie den Verweis auf den entsprechenden Abschnitt im Buch, in dem wir auf dieses genauer eingehen.

apt-cache

apt-cache bietet die folgenden Unterkommandos:

depends
Paketabhängigkeiten anzeigen (siehe Abschnitt 8.19, „Paketabhängigkeiten anzeigen“)
dotty
einen Abhängigkeitsgraphen im dot-Format für die benannten Pakete erzeugen (siehe das Beispiel in Abschnitt 2.5, „Zusammenspiel von dpkg und APT“)
dump
eine kurze Programminformation von jedem Paket im Paketcache anzeigen
dumpavail
die Liste der verfügbaren Pakete anzeigen
gencaches
den Paketzwischenspeicher von APT erzeugen
madison
verfügbare Versionen eines Pakets anzeigen (siehe Abschnitt 8.14, „Aus welchem Repo kommen die Pakete“ und Abschnitt 8.14.3, „Verfügbare Paketversionen ermitteln“)
pkgnames
die Namen aller Pakete auflisten, die APT kennt (siehe Abschnitt 8.3, „Bekannte Paketnamen auflisten“)
policy
die Quellen und deren Prioritäten auflisten (siehe Abschnitt 8.14, „Aus welchem Repo kommen die Pakete“)
rdepends
umgekehrte Paketabhängigkeiten anzeigen (siehe Abschnitt 8.19, „Paketabhängigkeiten anzeigen“)
search
Paket über den Namen finden (siehe Abschnitt 8.20, „Pakete über den Namen finden“)
show
Paketinformationen ausgeben und Paketstatus erfragen (siehe Abschnitt 8.4, „Paketstatus erfragen“)
showsrc
Informationen zum Sourcepaket anzeigen (siehe Abschnitt 8.37, „Sourcepakete anzeigen“)
showpkg
Informationen über das Paket anzeigen (siehe Abschnitt 8.4, „Paketstatus erfragen“)
stats
Statistik zum Paketcache ausgeben (siehe Abschnitt 7.3, „Paketcache-Status“)
unmet
eine Zusammenfassung aller unerfüllten Abhängigkeiten im Paketcache ausgeben (siehe „Paketstatus erfragen“ in Abschnitt 8.4, „Paketstatus erfragen“)
xvcg
einen Abhängigkeitsgraphen für xvcg für die benannten Pakete erzeugen

apt-get

apt-get gehört mit Sicherheit zur Menge der gebräuchlichsten Kommandos der APT-Familie und verfügt über die folgenden Unterkommandos:

autoclean
Paketcache aufräumen (siehe Abschnitt 7.5, „Paketcache aufräumen“)
autoremove
Paketwaisen löschen (siehe Abschnitt 8.44, „Umgang mit Waisen“)
build-dep
Abhängigkeiten eines Sourcepakets erfüllen (findet Verwendung beim Erstellen von Paketen)
check
Paketcache auf beschädigte Paketabhängigkeiten prüfen (siehe Abschnitt 8.19, „Paketabhängigkeiten anzeigen“)
clean
Paketcache aufräumen (siehe Abschnitt 7.5, „Paketcache aufräumen“)
dist-upgrade
Distribution aktualisieren (siehe Abschnitt 8.47, „Distribution aktualisieren (update und upgrade)“)
download
Paketdatei nur herunterladen (siehe Abschnitt 8.34, „Paketdatei nur herunterladen“)
dselect-upgrade
Aktualisierung der Pakete über dselect
install
Paket installieren (siehe Abschnitt 8.38, „Pakete installieren“)
purge
Paket inklusive Konfigurationsdateien des Pakets entfernen (siehe Abschnitt 8.43, „Pakete deinstallieren“)
remove
Paket deinstallieren (siehe Abschnitt 8.43, „Pakete deinstallieren“)
source
Beziehen der Sourcepakete (siehe Abschnitt 8.36, „Sourcepakete beziehen“)
update
Paketliste aktualisieren (siehe Abschnitt 3.13, „Liste der verfügbaren Pakete aktualisieren“)
upgrade
Pakete auf eine neue Version aktualisieren (siehe Abschnitt 8.41, „Pakete aktualisieren“)

apt-key und apt-mark

Für apt-key sind die Unterkommandos add, adv, del, export, exportall, finger, list, net-update und update zulässig. Diese besprechen wir ausführlich unter „Paketquelle auf Echtheit überprüfen“ in Abschnitt 3.12, „Paketquelle auf Echtheit überprüfen“.

Die Unterkommandos von apt-mark lauten auto, manual, showauto und showmanual. Dazu gehen wir unter „Paketstatus erfragen“ in Abschnitt 8.4, „Paketstatus erfragen“ detailliert ein.

Weiterentwicklung von APT

Dieser Prozess geht stetig voran. Seit mehreren Jahren gibt es Bestrebungen, APT grundlegend zu erneuern bzw. dessen verteilte Funktionalität unter einer einzigen Benutzeroberfläche zusammenzufassen. Unter dem Namen APT2 [apt2] existiert zwar ein Prototyp mit neuer API, jedoch gab es dort nach unserer Recherche seit 2011 keine weitere Entwicklung mehr.

Eine weniger tiefgreifende, aber dennoch erfrischende Modernisierung gibt es seit APT Version 1.0. Von da an enthält das Paket apt das zusätzliche, gleichnamige Kommandozeilenprogramm apt. Dieser Programmname wurde bis dato von einem Java-Programm zur Annotationsverarbeitung (Annotation Processing Tool) belegt [Java-Apt]. Es wird seit Java 7 als veraltet deklariert und ist seit Java 8 nicht mehr Bestandteil von Java.

Somit wurde der Weg für ein neues Programm frei, ohne große Verwirrung zu stiften. apt vereint die gängigsten Unterkommandos von apt-get und apt-cache in einem kürzeren Befehl und mit moderneren Standardeinstellungen wie z.B. einem Fortschrittsbalken und farbiger Ausgabe auf dem Terminal (siehe [Vogt-Apt-1.0]). Neben den bekannten Unterkommandos list, search, show, update, install und upgrade kennt es auch die neuen Aktionen full-upgrade als Ersatz für dist-upgrade und edit-sources zur direkten Veränderung der Datei /etc/apt/sources.list (siehe Abschnitt 8.41, „Pakete aktualisieren“ und Abschnitt 3.3, „Die Datei /etc/apt/sources.list verstehen“). Darüber hinaus verfügt es ab APT Version 1.1 über die Fähigkeit, lokal vorliegende deb-Pakete zu installieren und dabei die dazugehörigen Paketabhängigkeiten mit zu berücksichtigen.[14]

In LinuxMint gibt es dagegen schon länger einen Befehl apt [LinuxMint-apt], welcher allerdings ein in Python geschriebener Wrapper um apt-get, apt-cache und neuerdings auch apt ist. Dieser befindet sich in /usr/local/bin/ und hat weitere LinuxMint-spezifische Features, wie z.B. das automatische Aufrufen der eigentlichen Befehle via sudo wo notwendig.

Ebenfalls in produktivem Zustand und teilweise intensiver Benutzung befinden sich die Werkzeuge cupt, aptitude und SmartPM. Während sich und cupt nur auf die Kommandozeile beschränken, bieten Ihnen aptitude zusätzlich eine textbasierte bzw. SmartPM eine graphische Benutzeroberfläche. Auf diese Werkzeuge gehen wir nachfolgend genauer ein (siehe, Abschnitt 6.2.5, „Cupt“, Abschnitt 6.3.2, „aptitude und Abschnitt 6.4.3, „Smart Package Management (SmartPM)“).

aptsh war auch lange Zeit verfügbar, wurde aber kurz vor dem Release von Debian 10 Buster entfernt). Es ist verfügbar bis Debian 9 Stretch und Ubuntu 19.04 Disco.

6.2.3. wajig

Das in der Programmiersprache Python geschriebene Programm wajig [Debian-Paket-wajig] ist vorrangig ein Wrapper um dpkg (Abschnitt 6.2.1, „dpkg) und APT (Abschnitt 6.2.2, „APT“). Es zählt zur gleichen Kategorie wie die nicht mehr verfügbare aptsh, beinhaltet aber auch Elemente von cupt (Abschnitt 6.2.5, „Cupt“) und aptitude (Abschnitt 6.3.2, „aptitude) auf der Kommandozeile [15].

Anmerkung

Die bisher letzte stabile Veröffentlichung von wajig befindet sich in Debian 10 Buster, danach ist es nur noch im Bereich unstable vorrätig.

wajig zielt darauf ab, alle im Alltag erforderlichen Aktionen zur Paketverwaltung in einem einzigen Werkzeug für die Kommandozeile zusammenzufassen. Daher haben sich die wajig-Entwickler das Ziel gesetzt, die APT-Bibliotheken (siehe Kapitel 5, APT und Bibliotheken) vollständig auszureizen und nach Möglichkeit auch alle Optionen, die dpkg und APT bieten, im Programm zu integrieren. Gleichzeitig stehen auch Funktionen bereit, die von den separaten Werkzeugen wie bspw. apt-cdrom (Abschnitt 3.8, „Physische Installationsmedien mit apt-cdrom einbinden“) oder alien (siehe Abschnitt 23.2, „Fremdformate mit alien hinzufügen“) entlehnt wurden.

Sie bedienen wajig ausschließlich über die Tastatur. Möglich sind zwei Modi — mit dem gewünschten Unterkommando beim Aufruf, oder ohne. Bei ersterem erfolgt die Ausgabe direkt im Terminal, bei letzterem öffnet sich dann zunächst die wajig-Shell und wartet auf Ihre Eingabe. In dieser können Sie dann alle Unterkommandos zur Paketverwaltung benutzen. Dazu zählen bspw. install zur Paketinstallation, detail zur Darstellung der Paketinformationen, listfiles zu Auflistung des Paketinhalts und remove zum Entfernen eines Pakets. Mittels find-file erstöbern Sie eine gewünschte Datei in den bereits installierten Paketen, wohingegen Ihnen list-orphans die Paketwaisen (siehe Abschnitt 8.44, „Umgang mit Waisen“) anzeigt.

Als Besonderheit ist einerseits die Anbindung an apt-get.org [apt-get.org] zu nennen, um darüber den Paketmirror nach Bedarf auszuwählen. Ebenso ist die Umwandlung und Installation von .rpm-Paketen mittels rpm2deb und rpminstall sowie die ausführliche, integrierte Hilfe hervorzuheben.

Suche nach der Datei sources.list mit Hilfe von wajig

$ wajig find-file sources.list
apt: /usr/share/man/es/man5/sources.list.5.gz
apt: /usr/share/man/ja/man5/sources.list.5.gz
apt: /usr/share/man/pt/man5/sources.list.5.gz
debtags: /etc/debtags/sources.list
apt: /usr/share/man/fr/man5/sources.list.5.gz
apt: /usr/share/doc/apt/examples/sources.list
debtags: /etc/debtags/sources.list.d
apt: /usr/share/man/de/man5/sources.list.5.gz
debtags: /etc/debtags/sources.list.d/source-example
apt: /usr/share/man/pl/man5/sources.list.5.gz
apt: /etc/apt/sources.list.d
apt: /usr/share/man/man5/sources.list.5.gz
$

Abbildung 6.1. wajig mit der Ausgabe des Kommandos listfiles

werkzeuge/werkzeuge-zur-paketverwaltung-ueberblick/fuer-die-kommandozeile/wajig-listfiles.png

Weitere Informationen zum Programm finden Sie auf der Webseite des Projekts [wajig-Webseite]. Um die Feinheiten der Kommandos zwischen dpkg, APT und wajig besser vergleichen zu können, hilft ein Blick in das Wiki von xtronics [xtronics-Wiki].

6.2.4. sysget

sysget ist ein Wrapper, welches den Aufruf zu den verschiedenen, tatsächlichen Paketwerkzeugen übernimmt. Ziel ist dabei, eine einheitliche Schnittstelle zu den Programmen wie APT, yum oder DNF herzustellen und damit auch Einsteigern die ersten Schritte nach einem Wechsel der Distribution zu erleichtern. sysget wird als Projekt auf GitHub gepflegt [sysgetGitHub].

Das Werkzeug orientiert sich an APT und versteht derzeit die folgenden Unterkommandos:

autoremove
Paketwaisen entfernen
clean
Aufräumen des Paketcaches
install
ein Paket installieren
remove
ein installiertes Paket wieder entfernen
search
Suche nach einem Paket
update
die Paketdatenbank aktualisieren
upgrade
ein einzelnes Paket oder das gesamte System aktualisieren

Anmerkung

sysget ist derzeit nicht als Debianpaket verfügbar, sondern lediglich als Quellcode von der Projektwebseite. Ob das Projekt weitergepflegt wird, ist unklar. Die letzte Veröffentlichung stammt aus dem Oktober 2019.

6.2.5. Cupt

Cupt beschreibt sich selbst als High-level Package Manager und integriert Kommandos unter einem Dach, die Sie von den Werkzeugen dpkg und APT her kennen. Dafür nutzt es auf der Serverseite die gleiche Infrastruktur wie APT. Die Clientseite wurde hingegen komplett neu entwickelt. Sie rufen das in der Programmiersprache C++ entwickelte Werkzeug über das gleichnamige Kommando cupt auf.

Wie bereits oben angerissen, vereinigt Cupt zwar Kommandos aus dpkg und APT, jedoch bislang noch nicht alle davon. Offen ist bspw. der Support für multiarch (Abschnitt 1.2.3, „Multiarch: Mehrere Architekturen gleichzeitig auf einem System“). Gleichzeitig bietet es auch weitere Features, die APT noch fehlen (siehe [Debian-Wiki-cupt]), bspw. Debdelta [Debdelta] und die Synchronisation anhand der Version des Sourcepakets. Ebenso kennt es ein Kommando satisfy, um auf der Kommandozeile angegebene Paketbedingungen zu erfüllen, z.B. cupt satisfy ``kmail (>= 4:4.2), wget (>= 1.10.0)''.

Cupt kann problemlos parallel zu APT verwendet werden, ist jedoch gemäß seinem Autor noch nicht sehr weit verbreitet und auch entsprechend wenig durch Benutzer in der Praxis getestet [Cupt-Tutorial]. Wir gehen im Buch nicht weiter darauf ein.



[13] Weitere Optionen zu dpkg entnehmen Sie bitte der Manpage zum Programm

[14] Diese Eigenschaft stammt vom Programm gdebi (siehe Abschnitt 6.4.5, „GDebi“), welches ebenfalls vom APT-Entwickler Michael Vogt gepflegt wird.

[15] Bis einschließlich Debian 6 Squeeze bestand zudem eine graphische Variante namens gjig, die mittlerweile obsolet und in keiner unterstützten Debian- oder Ubuntu-Veröffentlichung mehr verfügbar ist.