Aus LinuxUser 01/2010

Dpkg, Apt und Co.

© Simon Müller, sxc.hu

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.

Debians Dpkg [1] ist neben dem Red Hat Package Manager RPM [2] die am weitesten verbreitetste Paketverwaltung unter den gängigen Linux-Distributionen. Die anfangs von Matt Welsh, Carl Streeter und Debian-Begründer Ian Murdock in Perl geschriebene Verwaltung bildet auch die Grundlage für Canonicals Ubuntu Linux. Selbst PDAs und Router, die unter Linux laufen, verwenden eine abgewandelte Version von Dpkg mit dem Namen Ipkg [3].

Debian-Pakete erkennen Sie an der Endung .deb einer Datei. Dabei handelt es sich eigentlich nur um ein mit ar gepacktes Archiv mit folgendem Aufbau:

  • debian-binary: Versionsinformationen für Dpkg, zum Beispiel der String 2.0.
  • md5sums: Prüfsummen für die vom Paket installierten Dateien
  • control.tar.gz: Archiv mit Steuerungsdateien, Abhängigkeitsinformationen und Pre-/Post-/De-Installationsskripten und anderem mehr
  • data.tar.gz: Archiv mit den eigentlichen Programmdateien.

Über die Option -i weisen Sie Dpkg an, ein Debian-Paket zu installieren (dpkg -i Paket.deb). Möchten Sie einen Blick auf den Inhalt werfen, führen Sie dpkg -c Paket.deb aus. Dpkg selbst löst keine Abhängigkeiten zwischen Paketen auf: Beim Versuch, ein Paket zu installieren, dessen Dependencies nicht erfüllt sind, quittiert Dpkg die Aktion mit einer entsprechenden Fehlermeldung.

In seltenen Fällen kommt es vor, dass Pakete nicht richtig installiert sind. Den Status eines einzelnen Pakets fragen Sie mittels dpkg -s Paket ab, wobei der Paketname dem Dateinamen ohne die Endung entspricht. Die bereits auf dem System installierten Pakete zeigt der Befehl dpkg -l: Die erste Spalte gibt den Status des Pakets mithilfe von zwei Buchstaben an – im weiteren Verlauf des Artikels erfahren Sie hierzu mehr. Die zweite Spalte führt den Namen an, danach folgen die Paketversion und die Paketbeschreibung (Abbildung 1).

Abbildung 1: Dpkg bietet die Möglichkeit, auf dem System installierte und teilweise installierte Pakete (falls beispielsweise die Konfiguration fehlschlug) übersichtlich anzuzeigen.
Abbildung 1: Dpkg bietet die Möglichkeit, auf dem System installierte und teilweise installierte Pakete (falls beispielsweise die Konfiguration fehlschlug) übersichtlich anzuzeigen.

Falls es ein Paket auf dem System bereits gibt, aktualisiert Dpkg es ohne eine weitere Interaktion des Benutzers – die Angabe einer zusätzlichen Option ist nicht erforderlich. Wünschen Sie die Aktualisierung eines Paketes nicht, gibt es die Möglichkeit, es auf „hold“ zu setzen, also quasi einzufrieren. Dazu dient die Anweisung

# echo Paket "hold" | dpkg --set-selections

Eine Liste aller Pakete, die auf „hold“ gesetzt sind, erhalten Sie mittels des Befehls dpkg --get-selections | grep hold.

In seltenen Fällen kommen Sie nicht umhin, ein Paket zu installieren, obwohl einige Abhängigkeiten nicht einzuhalten sind. Beispielsweise kann es vorkommen, dass für eine 64-Bit-Installation keine entsprechende Paketversion vorliegt. Nach Angabe der Option --force warnt dpkg nur noch, falls eine Bedingung nicht eingehalten wird. dpkg --force-all ignoriert sämtliche Bedingungen, wie Architektur, eingefrorene Pakete oder nicht erfüllte Paketabhängigkeiten. Mehr Informationen liefert dpkg --force-help.

Möchten Sie herausfinden, aus welchem Paket eine bestimmte Datei stammt, führt der Befehl dpkg -S /Pfad/zur/Datei zum Ziel. Sollte die angegebene Datei zu keinem Paket gehören, hat das System sie während der Konfiguration oder im Alltagsbetrieb erstellt, oder es handelt sich um eine vom Benutzer angelegte Datei.

Möchten Sie ein Paket wieder aus dem System entfernen, so übergeben Sie Dpkg dessen Namen zusammen mit der Option -r. Etwaige Konfigurationsdateien im Verzeichnis /etc bleiben dabei jedoch erhalten, erst mit dem Parameter -P löscht die Paketverwaltung auch diese Dateien restlos von der Platte. Solange andere Pakete vom zu Deinstallierenden abhängen, entfernt Dpkg dieses nicht wirklich, sondern markiert es lediglich als gelöscht. In der Statusübersicht erkennen Sie das in der ersten Spalte: Dort erscheint vor dem Paketnamen nicht mehr ii, sondern ri (removed/installed, „entfernt“) oder pi (purged/installed, „bereinigt“).

Einige Anwendungen, darunter beispielsweise Apache, benötigen eine Ausgangskonfiguration. Bei der Installation eines Paketes fordert Dpkg Sie deshalb auf, die entsprechende Konfigurationseinstellungen anzugeben. Für eine Neukonfiguration bewegen Sie Dpkg über den Schalter --configure zur erneuten Abfrage der Konfigurationsdaten.

Komfort-Tool Apt

Dpkg kann lediglich lokal vorliegenden Pakete installieren, nicht aber solche aus dem Netz. Um diesen Umstand abzuhelfen, schufen die Debian-Entwickler am 31. März 1998 das Programm Apt („A Package Tool“). Es holt Dateien von FTP- oder HTTP-Servern, löst selbstständig Abhängigkeiten auf und installiert das Paket im Anschluss.

Im Verzeichnis /etc/apt lagert die Datei sources.list, welche die Paketquellen für Apt enthält. Den Aufbau der Datei haben die Entwickler sehr einfach gehalten. Das Schlüsselwort deb für eine Quelle mit Binärprogrammen oder deb-src für Quelldateien leitet den Pfad für ein Paket-Repository ein. Als nächstes folgt der URI zum Top-Level-Pfad des Servers. Den dritten Teil bildet die Distributionsversion, zum Beispiel karmic für Ubuntus jüngstes Kind. Zum Schluss folgen die sogenannten Komponenten – in der Regel main, contrib oder non-free. Ein Beispiel einer Zeile aus Ubuntu 9.10 sieht folgendermaßen aus:

http://de.archive.ubuntu.com/ubuntu/ karmic main

Vor Beginn jeder Installation sollten Sie als erstes den Paket-Cache aktualisieren. Das erledigt der Befehl apt-get update (Abbildung 2). Anschließend spielen Sie die gewünschte Software mit apt-get install Paket ein. Nicht immer ist jedoch der Paketname bekannt. In diesem Fall suchen Sie mittels apt-cache search Begriff in der Paketdatenbank. Der Befehl gibt eine Liste aller Pakete aus, in deren Namen oder Beschreibung sich der gesuchte Begriff findet.

Abbildung 2: Vor der Aktualisierung des Systems oder Installation neuer Pakete ist es empfehlenswert, den Paketcache zu aktualisieren.
Abbildung 2: Vor der Aktualisierung des Systems oder Installation neuer Pakete ist es empfehlenswert, den Paketcache zu aktualisieren.

Um das System auf den neuesten Stand zu bringen, führen Sie apt-get upgrade oder apt-get dist-upgrade aus. Ein dist-upgrade installiert im Gegensatz zu upgrade auch neue Abhängigkeiten, sofern ein aktualisierbares Paket danach verlangt.

LinuxUser 01/2010 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

2 Kommentare auf "Dpkg, Apt und Co."

  E-Mail Benachrichtigung  
Neuste Älteste Beste Bewertung
Benachrichtige mich zu:

Zitat: Das Duo lässt sich einfach bedienen und sorgt insbesondere für eine kinderleichte System- oder Distributionsaktualisierung – wie insbesondere Ubuntu zweimal jährlich
da fehlen doch im letzten Satzteil “ – wie insbesondere Ubuntu zweimal jährlich “ die Ironie Tags? 🙂
Denn sollte das ernst gemeint sein so möchte ich doch mal darauf hinweisen dass die Failures beim Upgeade aud eine neue Ubuntu Version rein gar nichts mit apt/dpkg zu tun haben.

greetz
ferdi

Ohne jede Ironie:

Das mußte ja aus der sidux-Ecke kommen.