15.3 dpkg – Die Basis der Paketverwaltung 

Wenn Sie Ubuntu installiert haben und nun nach speziellen Programmen suchen, werden Sie früher oder später auf den Ausdruck »Repository« stoßen. Auch in dem vorliegenden Buch war davon bereits mehrfach die Rede. Aber was sind diese Repositorys eigentlich?
Auf Systemen wie Ubuntu kommt freie und quelloffene Software (Open-Source-Software) sehr oft in vorgefertigten Paketen, den deb-Dateien, daher. Eine andere Variante sind die rpm-Dateien, die man auf SUSE- und RedHat-Systemen findet. Solche Pakete enthalten alle benötigten Programme und Bibliotheken und sind leicht zu installieren. Sie finden die deb-Pakete in den verschiedenen Repositorys. Das sind Server, die ganze Sammlungen von Paketen zum Download bereitstellen. Auf derartige Pakete kann man mit Verwaltungstools wie z. B. apt-get oder Synaptic zugreifen und sie auf den PC herunterladen und anschließend installieren. Ein manuelles Kompilieren und Installieren der Software ist somit nicht nötig.
Debian-Pakete unter Ubuntu einsetzen
Wie ich bereits erläuterte, basiert Ubuntu auf Debian. Dies bedeutet, dass sich die Ubuntu-Entwickler prinzipiell die Softwarepakete von Debian nehmen und sie für die eigene Distribution anpassen. Das wirft die Frage auf, ob der Anwender sich nicht gleich die Debian-Pakete installieren kann.
Abbildung 15.6 Komfortable Paketinstallation mit GDebi
Installationstechnisch stellt dies kein Problem dar, da beide Distributionen dasselbe Paketsystem verwenden. Dennoch raten viele Insider, insbesondere auch das Ubuntu-Team, davon ab.
Auf der Ubuntu-Homepage findet man folgende Aussage:
»Obwohl Debian und Ubuntu zu einem großen Teil kompatibel sind und viele Quellpakete gemein haben, ist es keine gute Idee, Binärpakete der beiden Distributionen zu mischen. Diese wurden unabhängig voneinander kompiliert, was zu unerwarteten Effekten im Paketmanagement-System führen kann.
Die potentielle Unverträglichkeit stellt aber in Wirklichkeit kein Problem dar: Nahezu jegliche Software des Debian-Systems findet man auch unter Ubuntu.«
Sollte man nun auf eine Softwarekomponente angewiesen sein, die nicht im Ubuntu-System enthalten ist, so hat man die Möglichkeit, sogenannte »Backports« zu verwenden. Mehr dazu finden Sie in Abschnitt »Backports« ab Seite Mark#-->»Mark Shuttleworth« ab Seite finden Sie ein Interview mit Mark Shuttleworth, in dem er auf die besondere Beziehung von Ubuntu zu Debian näher eingeht.
| Mit GDebi Debian-Pakete grafisch installieren |
|
Wenn Sie trotzdem einmal in die Verlegenheit kommen und Debian-Pakete manuell installieren möchten, so bringt Ubuntu dafür ein grafisches Tool mit. Nach einem Rechtsklick auf das entsprechenden Debian-Paket wählen Sie Mit »GDebi Paketinstaller« öffnen aus. In dem sich öffnenden Fenster des Paket-Installers werden Informationen und die Abhängigkeiten des Pakets angezeigt (siehe Abbildung). Nach einem Klick auf Paket installieren werden das Paket und gegebenenfalls die vorhandenen Abhängigkeiten installiert. |
|
Wenn Sie mit dem Browser (z. B. dem Firefox) Debian-Pakete aus dem Internet herunterladen, können Sie diese gleich mit gdebi öffnen und installieren. In Breezy oder älteren Versionen ist dazu ein kurzer Ausflug auf die Konsole nötig. Mit |
| sudo dpkg -i 'Dateiname' |
|
wird das Paket installiert. Dazu müssen Sie sich natürlich in dem entsprechenden Verzeichnis befinden, in dem sich auch das .deb-Paket befindet. Mit dpkg rufen Sie den Paketmanager debian package auf, die Option -i installiert dieses Paket dann. |
|
Falls Sie ein Paket installieren wollen, das sich ebenfalls in den offiziellen Repositorys befindet, dann werden Sie durch einen Hinweis benachrichtigt, dass die Installation aus den klassischen Paketquellen zu bevorzugen sei. Sie können diesen Hinweis getrost ignorieren, wenn Sie sich über die Herkunft des Pakets sicher sind oder wissen, was Sie tun. |
Paketverwaltungstools
Die Paket-Verwaltungstools (beispielsweise Synaptic und Adept) listen alle installierten Pakete auf, angefangen vom verwendeten Kernel bis hin zu Ihren bevorzugten Anwendungen samt allen Bibliotheken. Zusätzlich kann man sich darüber informieren, welche Pakete in den verschiedenen Repositorys zur Verfügung stehen, sofern Sie die entsprechenden Repositorys dem Tool auch bekannt gemacht haben. Wie man das macht, wird weiter unten erklärt.
Zentrale Verwaltung
Durch den Einsatz solcher Tools lassen sich die zentralen Aufgaben des Paket-Managements zentral und einfach halten, als da wären:
- Installation von Programmen
- restlose Deinstallation von Programmen
- Deinstallation von Programmen bei Erhalt von Konfigurationsdateien
- Suchen nach Programmen
- Updates von Programmen
Zugleich bieten die Paketmanager den Distributoren der Pakete eine einfache Möglichkeit, Sie mit Paket-Updates zu versorgen. Sie erfahren mehr über die auf dpkg aufsetzenden Management-Tools
- APT in Abschnitt ab Seite und
- aptitude in Abschnitt ab Seite .
Debian-basiert
Debian-basierte Systeme verpacken ihre Pakete in einem deb-Format und arbeiten mit dem Debian Package Manager (dpkg). Ubuntu macht hier keine Ausnahme.
Die Paketverwaltung kümmert sich um die Grundlage Ihres Betriebssystems – die Pakete, aus denen Ubuntu und Linux bestehen. Hierbei werden durch dpkg die Pakete so verwaltet, dass ein stabiles System resultiert. Um dies zu erreichen, prüft dpkg beständig die Abhängigkeiten zu installierender Pakete und verhindert konsequent das Installieren von Programmen, wenn diese durch nicht auflösbare Abhängigkeiten das System in seiner Stabilität gefährden könnten. Der umgekehrte Weg wird ebenso überwacht: dpkg verhindert das Entfernen von Paketen, die das System zu einem einwandfreien Betrieb braucht.
Wenn Sie mehr über die vielfältigen Fähigkeiten des Paketmanagers dpkg erfahren möchten, dann lohnt sich ein Blick in die Manpage mit
user$ man dpkg
Kurzreferenz
Mit dem Lesen dieser Manpage kann man Stunden verbringen und daher lohnt sich für das schnelle »Nachschlagen« von Befehlen die Kurzreferenz, die Sie mit dem Befehl dpkg -h | less aufrufen können. Hierbei wird die Ausgabe über die Pipe (»|«) an den Pager less weitergegeben.
Die meisten Optionen, die Sie angeben, existieren in Kurz- und Langform. So können Sie statt dpkg -i für das Installieren eines Paketes auch dpkg --install angeben.
Standortbestimmung
Schnell stieß man mit dpkg an die Grenzen. Man erkannte sehr früh, dass die Installation zwar einfacher wurde, da man nicht mehr bei jeder zu installierenden Anwendung diese selbst kompilieren musste, aber das Problem der Abhängigkeiten blieb weiterhin. Wenn man ein bestimmtes Paket installieren wollte, musste man teilweise mehrere andere Pakete vorher installieren, um die hinderlichen Abhängigkeiten aufzulösen. Dies konnte unter Umständen sehr zeitaufwendig und nervenraubend sein.
Schnell fand man eine Lösung für dieses Problem und entwickelte »Aufsätze« für dpkg, die allesamt noch die Grundstruktur von dpkg, also das Installieren und Entfernen von deb-Paketen, benutzen, sich aber teilweise im Vergleich zum alten Programm deutlich weiterentwickelt haben.
Als erste Verbesserung entstand dselect, das bis Debian 2.2 die bevorzugte Installationsmethode war. Es konnte bereits Abhängigkeiten auflösen, war aber rein konsolenbasiert und entsprechend unhandlich. So starteten ziemlich schnell Projekte wie APT und aptitude, auf die ich in den folgenden Abschnitten näher eingehen möchte.
Zwei Arten von Paketmanagern
Es gibt genau genommen zwei Arten von Paketmanagern: Auf der einen Seite stehen die Programme, die aus anderen Quellen Pakete nachladen können, um Abhängigkeiten aufzulösen, auf der anderen Seite diejenigen Programme, die direkt die Pakete installieren oder löschen, aber keine Abhängigkeitsverwaltungs- und Konfliktlösungsmechanismen kennen.
Zwei konkrete Fälle: Das Programm rpm kann Pakete vom Typ .rpm installieren und löschen, das Programm dpkg kann Pakete vom Typ .deb installieren und löschen. Beide können aber keine Abhängigkeiten auflösen, da sie keine Funktionen haben, um Software nachzuladen. Dies können erst die »richtigen« Paketmanager wie YUM, APT und andere.
| Alien – Mittler zwischen Welten |
|
|
|
Manchmal gibt es die gewünschte Lieblingssoftware nur im rpm-Format. Um diese dennoch installieren zu können, muss man dieses Paket in das bevorzugte deb-Format umwandeln. Bei dieser Aufgabe hilft einem ein Werkzeug namens alien. |
|
RPM- und Debian-Pakete sind häufig nicht kompatibel, können aber meist mit der Hilfe von alien von einem ins andere Format konvertiert werden. Sie installieren alien im Terminal mit |
| sudo apt-get install alien |
|
Wenn Sie nun ein Paket im rpm (paket.rpm) vorliegen haben, verwandeln Sie dieses mittels |
| alien paket.rpm |
|
in ein deb-Format. Sie finden nun im gleichen Verzeichnis die Datei paket.deb. Diese können Sie mit dem Befehl |
| dpkg -i paket.deb |
|
oder durch einen Doppelklick installieren. Dieses Verfahren birgt aber auch einige Tücken. Es können Probleme auftreten, wenn das zu konvertierende Paket von Bibliotheken abhängt, die gar nicht oder in einer anderen Version vorliegen. In einem solchen Fall wird zwar eventuell trotzdem die Transformation mit alien abgeschlossen, die anschließende Installation scheitert jedoch. Dann bleibt Ihnen meist nichts anderes übrig, als auf dieses Paket zu verzichten. |
15.3.1 Pakete installieren und deinstallieren 

Wie Sie ein Paket installieren, haben Sie bereits im vorigen Beispiel gesehen. Diese Aktion müssen Sie mit Administratorrechten ausführen, dpkg schreibt alle Meldungen, Warnungen und Fehler in das Terminal, in das Sie den Befehl eingegeben haben:
sudo dpkg -i bum_2.1.8-1_all.deb Password: Wähle vormals abgewähltes Paket bum. (Lese Datenbank ... 145205 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke bum (aus bum_2.1.8-1_all.deb) ... dpkg: Abhängigkeitsprobleme verhindern Konfiguration von bum: bum hängt ab von libgtk2-gladexml-perl; aber: Package libgtk2-gladexml-perl is not installed. dpkg: Fehler beim Bearbeiten von bum (--install): Abhängigkeitsprobleme – lasse es unkonfiguriert Fehler traten auf beim Bearbeiten von: bum
Ich habe im umseitigen Beispiel mit Absicht ein Paket gewählt, das sich nicht so einfach installieren lässt, damit ich Ihnen anhand dieses Beispiels eine solche Fehlermeldung präsentieren kann.
Wie installieren Sie nun dieses Paket? Dies ist prinzipiell auf zwei Arten möglich. Zum Einen könnten Sie sich auf die Suche nach allen Paketen begeben, die im umseitigen Beispiel gefordert werden, oder Sie nutzen eine smarte Paketverwaltung wie APT. APT löst die Abhängigkeiten automatisch auf und installiert alle abhängigen Pakete mit. Sie erfahren mehr über APT in Abschnitt ab Seite .
Wenn Sie mehrere Pakete installieren möchten, können Sie diese einfach an den obigen Befehl anhängen:
dpkg --install paket1:deb paket2.deb
Pakete entfernen
Wenn Sie ein Paket verschicken bzw. wieder entfernen möchten, dann nutzen Sie die Option -r. Ein Aufruf sieht folgendermaßen aus:
sudo dpkg -r bum (Lese Datenbank ... 145242 Dateien und Verzeichnisse sindderzeit installiert.) Entferne bum ...
Mit dem obigen Befehl haben Sie allerdings nur das Programm entfernt, seine Konfigurationsdateien bleiben vorhanden. Dies ist kein Fehler, sondern beabsichtigt. So brauchen Sie bei einer erneuten Installation des Programmes dieses nicht erneut einzurichten.
Wenn Sie das Programm komplett entfernen möchten, also mitsamt seinen Konfigurationsdateien, dann müssen Sie es »purgen«:
sudo dpkg -P bum
| Das System entrümpeln |
|
Wenn Sie Ihr System längere Zeit nutzen, haben Sie wahrscheinlich einige Programme installiert und vielleicht auch wieder deinstalliert. Dabei bleiben oftmals Pakete auf Ihrem System, die entweder als Voraussetzung automatisch installiert wurden oder davon abhängig sind. |
|
Sie haben prinzipiell zwei Möglichkeiten Ihr System zu entrümpeln: Zum einen können Sie durch den Befehl |
| sudo apt-get autoremove |
|
die eben angesprochenen Pakete entfernen. Die Alternative ist sehr viel radikaler: Über das Menü System • Systemverwaltung • Rechner-Hausmeister finden Sie ein Werkzeug, das es Ihnen erlaubt, durch einfaches Abwählen alle nachträglichen Programme auf einen Schlag zu entfernen. |
|
Eine weitere Alternative stellt deborphan dar. Es ist ein Programm, das auf einem Debian-System nach verwaisten Paketen sucht. Wird ein Paket gefunden, von dem keine anderen Pakete abhängig sind, so wird der Name ausgegeben. Dies ist hauptsächlich sinnvoll, um installierte Bibliotheken zu finden, die nicht mehr benötigt werden. Sie installieren deborphan ganz einfach im Terminal: |
| user$ sudo apt-get install deborphan |
|
Nun können Sie sich nach einem einfachen Aufruf deborphan alle verwaisten Pakete anzeigen lassen. Mit dem Befehl |
| user$ sudo dpkg -r PAKET |
|
können Sie nun Pakete löschen, die Sie nicht mehr brauchen. Gehen Sie hierbei behutsam vor und prüfen Sie gewissenhaft, ob Sie die angezeigten Pakete wirklich nicht mehr brauchen. |
15.3.2 Installierte Pakete konfigurieren 

Manchmal müssen Sie bereits installierte Pakete neu konfigurieren. Dies kann mehrere Gründe haben: Entweder ist bei der vorherigen Installation eines Pakets etwas schiefgelaufen oder Sie müssen eventuell Ihren X-Server nach dem Einbinden eines neuen Treibers anpassen.
Dieses Konfigurieren funktioniert mit dem folgenden Befehl:
sudo dpkg --configure <Paket>
und das Rekonfigurieren z. B. des X-Servers erfolgt mit
sudo dpkg-reconfigure xserver-xorg
15.3.3 Pakete finden 

Sie können sich vorstellen, dass in einem Repository mehr als nur ein paar Pakete liegen – es sind sehr viel mehr. Sie werden in den Ubuntu-Repositorys mehr als 10.000 Pakete finden, so dass man sehr viel Zeit mit dem Suchen nach dem richtigen Paket verbringen kann. Erschwerend kommt hinzu, dass die Pakete, die man installieren will, oftmals einen anderen Namen haben als die Programme, die sich in diesem Paket befinden.
Der Paketmanager dpkg hilft Ihnen auch hier. Mit der Option -S oder --search können Sie das Paket ermitteln, in dem sich eine bestimmte Datei befindet.
| Versteckte Programme in Paketen finden |
|
Sie möchten wissen, in welchem Paket sich das Programm ls befindet? Hier müssen wir einen kleinen Trick anwenden, da wir nicht wissen, wo sich der Pfad des ausführbaren Programms befindet. Diesen finden wir mit dem Befehl which, und das Ergebnis binden wir in die Suche mit ein: |
| sudo dpkg -S `which ls` coreutils: /bin/ls |
|
Wie Sie sehen, befindet sich das gewünschte Programm in einem Paket namens coreutils. |
| Liste aller installierten Pakete erstellen |
|
Wenn Sie eine Liste aller installierten Pakete haben möchten, dann benutzen Sie die Option -l. Diese Liste ist natürlich sehr lang und daher ist eine Umleitung an less wieder sinnvoll: |
| dpkg -l | less |
|
Nach Eingabe dieses Befehls sehen Sie nicht nur eine ellenlange Liste von Paketen, sondern auch zusätzliche Informationen über deren Status (siehe Abbildung). In den ersten beiden Spalten sehen Sie den Status des jeweiligen Pakets. Die Bedeutung der Buchstaben wird Ihnen am Anfang der Liste erklärt. |
Abbildung 15.7 Liste aller installierten Pakete
Wenn Sie die Liste wieder verlassen möchten, dann brauchen Sie das Terminal dazu nicht zu schließen, sondern Sie nutzen die Tastenkombination
+
+
und anschließend noch einmal
+
.
Keine Berücksichtigung von Abhängigkeiten
Die Basis der Paketverwaltung dpkg kann keine Abhängigkeiten auflösen, sondern »nur« Pakete (de-)installieren. Mit dpkg arbeiten verschiedene Paketmanager, unter anderem dselect. Dselect kann selbstständig Abhängigkeiten zwischen Paketen auflösen und Konflikte zwischen Paketversionen erkennen. Zum eigentlichen Installieren und Konfigurieren von Paketen kommt aber dpkg zum Einsatz. Dselect kann Pakete aus Quellen wie CDs, NFS- oder FTP-Servern beziehen. Dieser Paketmanager war bis Debian 2.2 der bevorzugte Paketmanager, wurde aber inzwischen von aptitude abgelöst.






Jetzt bestellen







