13 Software- und Paketverwaltung
»Wer die Freiheit aufgibt, um Sicherheit zu gewinnen,
wird am Ende beides verlieren.«
Benjamin Franklin (1706–1790),
US-Staatsmann, Ökonom und Naturforscher
Was Sie in diesem Kapitel erwartet
Die Zahl der auf der DVD mitgelieferten Programme ist zwar sehr groß, dennoch kann es vorkommen, dass Sie ein Programm installieren, das dort nicht enthalten ist. Wie Sie dann am besten vorgehen, möchte ich in diesem Kapitel erläutern. Die grundlegende Art und Weise, wie Sie Software installieren, haben Sie bereits in Kapitel 7, »Programme und Pakete installieren«, kennengelernt. In diesem Kapitel erfahren Sie nun, wie Sie Zugriff auf das komplette Ubuntu-Software-System erhalten. Hier lernen Sie bevorzugt die Hintergründe der Paketverwaltung und damit eine der großen Stärken von Ubuntu kennen.
Die Installation von Programmen ist unter Linux nicht so einheitlich und einfach wie in der Windows-Welt. Eine setup.exe suchen Sie hier meist vergebens. Unter Ubuntu/Linux gibt es vielfältige und zum Teil grundsätzlich verschiedene Möglichkeiten, neue Programme zu installieren. Eine ganz besonders bequeme Art der Installation von Software haben Sie bereits in Abschnitt 7.5, »Software-Center«, kennengelernt. Mit dem Software-Center haben Sie vollen Zugriff auf Tausende von Programmen.
Benötigtes Vorwissen
Von Vorteil sind grundlegende Kenntnisse im Umgang mit dem Terminal (siehe Abschnitt »Das Terminal – sinnvoll oder überflüssig?«).
13.1 dpkg – Die Basis der Paketverwaltung
Auf Systemen wie Ubuntu wird freie und quelloffene Software (Open-Source-Software) sehr oft in vorgefertigten Paketen, den .deb-Dateien, angeboten. Eine andere Variante sind die .rpm-Dateien, die Sie auf SUSE- und Red-Hat-Systemen finden. 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 können Sie mit Verwaltungstools wie zum Beispiel 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äutert habe, 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 nicht gleich die Debian-Pakete installieren kann. 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-Website finden Sie 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 finden Sie auch unter Ubuntu.«
Sollten Sie nun auf eine Softwarekomponente angewiesen sein, die nicht im Ubuntu-System enthalten ist, so haben Sie die Möglichkeit, sogenannte Backports zu verwenden. Diese wurden schon in Abschnitt 7.5.2, »Backports – Alternative zu Fremdquellen«, erwähnt. In Anhang A, »Mark Shuttleworth«, finden Sie ein Interview mit Mark Shuttleworth, in dem er auf die besondere Beziehung von Ubuntu zu Debian näher eingeht.
Tipp 193: Mit GDebi Debian-Pakete grafisch installieren |
Wenn Sie trotzdem einmal in die Verlegenheit kommen und Debian-Pakete manuell installieren möchten, so können Sie sich das grafische Tool gdebi installieren. Nach einem Rechtsklick auf das entsprechende 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 13.1). Nach einem Klick auf Paket installieren werden das Paket und gegebenenfalls die vorhandenen Abhängigkeiten installiert. |
Wenn Sie mit dem Browser (zum Beispiel 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. Mit dpkg rufen Sie den Paketmanager debian package auf, und 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. |
Abbildung 13.1 Komfortable Paketinstallation mit »GDebi« – hier erscheint der Hinweis, dass ein Paket mit der gleichen Version bereits vorhanden ist.
Paketverwaltungstools
Die Paketverwaltungstools (beispielsweise das Ubuntu Software-Center) listen alle installierten Pakete auf, angefangen vom verwendeten Kernel bis hin zu Ihren bevorzugten Anwendungen samt allen Bibliotheken. Zusätzlich können Sie 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 Sie das machen, habe ich im Abschnitt 7.5.1, »Paketquellen hinzufügen« bereits erläutert.
Zentrale Verwaltung
Durch den Einsatz solcher Tools lassen sich die grundlegenden Aufgaben des Paketmanagements 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 und aptitude in Abschnitt 13.2, »Advanced Packaging Tool (APT)«. Debian-basierte Systeme verpacken ihre Pakete in einem .deb-Format und arbeiten mit dem Debian Package Manager (dpkg). Ubuntu macht hier keine Ausnahme.
Grundlage Ihres Systems
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 dem Befehl man dpkg.
Kurzreferenz
Mit dem Lesen dieser Manpage können Sie Stunden verbringen, und daher lohnt sich für das schnelle »Nachschlagen« von Befehlen die Kurzreferenz, die Sie mit dem Befehl dpkg -h | less aufrufen. 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 Pakets auch dpkg --install angeben.
Standortbestimmung
Schnell stießen Anwender 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 bestehen. Wenn man ein bestimmtes Paket installieren wollte, musste man teilweise mehrere andere Pakete vorher installieren, um die hinderlichen Abhängigkeiten aufzulösen. Dies war unter Umständen sehr zeitaufwendig und nervenraubend.
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 gibt es 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.
13.1.1 Einzelne Pakete installieren und deinstallieren
Wie Sie ein Paket installieren, dessen Abhängigkeiten alle erfüllt sind, haben Sie bereits kennengelernt. Kommen wir nun zu dem Fall, dass Sie sich ein Debian-Paket heruntergeladen haben, dessen Abhängigkeiten noch nicht erfüllt sind. 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
Wie installieren Sie nun dieses Paket? Dies ist prinzipiell auf zwei Arten möglich. Sie könnten sich beispielsweise auf die Suche nach allen Paketen begeben, die im 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 13.2, »Advanced Packaging Tool (APT)«. 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 wieder entfernen möchten, dann nutzen Sie die Option -r:
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 Programms dieses nicht noch einmal einzurichten. Wenn Sie das Programm komplett entfernen möchten, also mitsamt seinen Konfigurationsdateien, dann müssen Sie es mit sudo dpkg -P bum purgen (englisch to purge, »eliminieren«).
Tipp 195: Alien – Mittler zwischen Welten |
Manchmal gibt es die gewünschte Lieblingssoftware nur im rpm-Format. Um diese dennoch installieren zu können, müssen Sie dieses Paket in das bevorzugte .deb-Format umwandeln. Bei dieser Aufgabe hilft Ihnen ein Werkzeug namens alien. |
RPM- und Debian-Pakete sind häufig nicht kompatibel, können aber meist mit der Hilfe von alien vom einen ins andere Format konvertiert werden. Sie installieren alien im Terminal mit: |
sudo apt-get install alien |
Wenn Sie 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. Das 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. |
13.1.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 <Paketname>
Das Rekonfigurieren zum Beispiel des X-Servers erfolgt mit:
sudo dpkg-reconfigure xserver-xorg
13.1.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 Sie sehr viel Zeit mit dem Suchen nach dem richtigen Paket verbringen können. 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.
Tipp 196: 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 Sie mit dem Befehl which, und das Ergebnis binden Sie in die Suche mit ein: |
sudo dpkg -S 'which 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 zusätzliche Informationen über deren Status (siehe Abbildung 13.2). 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 13.2 Liste aller installierten Pakete
Wenn Sie die Liste wieder verlassen möchten, dann brauchen Sie das Terminal dazu nicht zu schließen, sondern Sie tippen einfach die Taste .
Die Liste aller installierten Pakete exportieren
Um die Liste zu exportieren, geben Sie bitte Folgendes ein:
sudo dpkg-query -l > packages.list
Die alphabetisch sortierte Paketliste finden Sie danach in der Datei packages.list in dem Verzeichnis, in dem Sie sich gerade befinden. Sie können sich diese Textdatei mit einem beliebigen Editor anzeigen lassen, zum Beispiel mit gedit oder kate: gedit packages.list.
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 selbstä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.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.