Für eine optimale Darstellung aktivieren Sie bitte JavaScript.

Was ist ein 'Paketmanager' in Linux? Wie funktioniert er?

 ·  ☕ 6 Min. Lesezeit  ·  ✍️ ikoch

Teaser-Bild
Bild von 3D Animation Production Company auf Pixabay

Einleitung

Einer der wesentlichen Punkte, in denen sich verschiedene Distributionen unterscheiden, ist das Paketmanagement. Hier schauen wir uns an, was man in Linux unter einem Paketmanager versteht und wie sie arbeiten. Auch schauen wir uns die verschiedenen Paketmanager an.

Was sind “Paketmanager” in Linux?

Ein wenig vereinfacht ist ein Paketmanager ein Werkzeug, mit dem man Software-Pakete innerhalb eines Betriebssystems installieren, entfernen, aktualisieren und verwalten kann. Der Paketmanager kann über eine grafische Oberfläche verfügen, wie z. B. Discover in KDE-Plasma oder über die Befehlszeile gesteuert werden z. B. Werkzeuge wie apt-getoder pacman.

Ich habe bereits das Wort “Pakete” verwendet und werde dieses in diesem Artikel auch noch öfters verwenden. Von daher schauen wir uns zuerst einmal an was diese “Pakete” eigentlich sind.

Was sind “Pakete”?

Mit einem Paket meint man üblicherweise eine Software-Anwendung. Dabei kann es sich allerdings sowohl um eine Anwendung mit grafischer Oberfläche handeln, um ein Werkzeug auf der Befehlszeile oder um eine Software-Bibliothek. Bei einer Bibliothek handelt es sich um eine Sammlung von Hilfsmodulen, die selbst nicht lauffähig sind, die aber von anderen Programmen verwendet werden.

Ein Paket ist genaugenommen eine Archivdatei, die die ausführbaren Dateien, einige Konfigurationsdateien und evtl. Informationen über Abhängigkeiten enthält.

Unter einer Abhängigkeit versteht man zusätzliche Pakete, die ein Programm benötigt, um funktionsfähig zu sein. Programme können relativ klein ausfallen, da sie sich einzelne Pakete mit anderen Programmen teilen können. In Linux ist es normal, dass ein Programm mehrere Abhängigkeiten besitzt. Die Mitinstallation aller benötigter Pakte durch den Paketmanager nennt man das Auflösen der Abhängigkeiten.

Mit der Verwaltung der abhängigen Pakete sorgt der Paketmanager für ein konfliktfreies Funktionieren der Anwendungen. Wer sich noch an die DLL-Hölle früherer Windows-Versionen erinnern kann, wird dieses zu schätzen wissen.

Früher wurde Software direkt aus dem Original-Quelltext heraus installiert. Man hätte sich eine Datei mit Informationen (üblicherweise mit dem Namen readme) angeschaut und erfahren, welche Software-Komponenten benötigt werden. Eine Konfigurationsdatei (auch makefile genannt) war oft beigefügt. Man hätte die Software selbst kompiliert und sich auch selbst darum gekümmert, dass alle Abhängigkeiten vorhanden sind.

Um den Installationsaufwand zu verringern, haben Linuxdistributionen ihre eigenen Paketformate entwickelt. Dieses ermöglicht es den Benutzern, die Installation über fertige Installationsdateien zusammen mit den Metadaten und den Abhängigkeiten durchzuführen.

Etwa Mitte der 90er Jahre entwickelte Debian das DEB (oder .deb) Format und Red Hat Linux entwickelte das RPM (oder .rpm) Format. Beide Formate sind heute die gebräuchlichsten Paketformate bei Linux-Distributionen. Die Möglichkeit, alternativ direkt aus den Quelltexten zu kompilieren, besteht natürlich auch heute noch. Das ist aber nur noch eine von mehreren Möglichkeiten.

Um die Paketverwaltung zu nutzen benötigen Sie einen Paketmanager.

Wie funktioniert ein Paketmanager?

Wir sollten dabei im Kopf behalten, dass Paketmanager kein spezielles Linux-Konzept ist. Es gibt Paketmanager für verschiedene Software oder Programmiersprachen. So gibt es einen eigenen Paketmanager (PIP) nur für Python-Pakete. Selbst der Atom-Editor verfügt über einen eigenen Paketmanager.

In diesem Artikel beschränken wir uns aber auf Linux und erklären die Paketmanager aus der Linuxperspektive. Auch wenn sich die meisten Aussagen auf die anderen Paketmanager anwenden lassen.

Das folgende Diagramm soll die Funktionsweise eines Paketmanagers verdeutlichen.

flowchart LR
A(Rechner des Benutzers) <-->|Paketmanager| B[(Paketquellen)]
B <==> D(Pakete)
subgraph "Inhalt der Paketquellen"

E(Abhängigkeiten des Pakets) ==> D
D <--> C(Metadaten des Paketes)
end 

Nahezu alle Linux-Distributionen verfügen über Paketquellen (z. B. die Ubuntu-Paketquellen). Dabei handelt es sich im Wesentlichen um eine Sammlung von Software-Paketen. Und ja, Distributionen können über mehr als eine Paketquelle verfügen. Die Art der Pakete unterscheidet sich dann zwischen den Paketquellen.

Zusätzlich enthalten die Paketquellen auch noch Informationen über die Pakete, wie beispielsweise den Namen des Paketes, die Versionsnummer, eine Beschreibung des Paketes, den Namen der Paketquellen, usw. Das sind die Informationen, die Sie sich in Ubuntu / Debian mit dem apt show-Befehl anzeigen lassen können.

Wenn Sie über Ihren Paketmanager den Installationsbefehl ausführen (also z. B. apt install Paketname), dann durchsucht der Paketmanager den Zwischenspeicher der Paketquellen. Falls er das bezeichnete Paket dort findet, dann verbindet er sich über das Internet mit der entsprechenden Paketquelle und lädt das Paket zuerst herunter. Anschließend beginnt er mit der Installation auf Ihrem Rechner.

Ein Paket kann über Abhängigkeiten verfügen. Das bedeutet, dass es für die Installation weitere Pakete benötigt. Der Paketmanager kümmert sich um diese Abhängigkeiten und installiert die weiteren Pakete zusammen mit dem ursprünglichen Paket automatisch mit.

Bildschirmausgabe des apt install Befehls

Die im Bild türkis unterstrichenen Zeilen informieren über die abhängigen Pakete, die noch mit installiert werden.

Ähnlich verhält es sich bei dem Entfernen von Paketen durch den Paketmanager. Entweder wird das nicht mehr benötigte abhängige Paket automatisch mit deinstalliert oder der Paketmanager informiert regelmäßig darüber, dass unbenutzte Pakete vorhanden sind, die entfernt werden können.

Im Bild habe ich diesen Block pink umrandet. Wie diese unbenutzten Pakete entfernt werden können hatte ich bereits in meinem Artikel zum Frühjahrsputz auf der Festplatte erläutert.

Neben den offensichtlichen Aufgaben wie die Installation und das Entfernen können mit dem Paketmanager auch andere Aufgaben zur Steuerung und Einstellung der Pakete vorgenommen werden. So kann man beispielsweise verhindern, dass eine Aktualisierung auf eine bestimmte neue Paketversion vorgenommen wird falls man Probleme mit dieser Version erwartet.

Die verschiedenen Arten von Paketmanagern

Ich hatte weiter oben bereits beschrieben, dass es verschiedene Paketformate gibt. Entsprechend gibt es auch eine ganze Reihe von verschiedenen Paketmanagern. Dabei sind auch für ein und dasselbe Paketformat mehrere Paketmanager verfügbar.

Für das RPM-Format gibt es beispielsweise die Paketmanager Yum und DNF. Für das DEB-Format allein auf der Befehlszeile die Paketmanager apt, apt-get und apitude.

Ansicht des Programms MUON

Wobei es sich bei Paketmanager nicht unbedingt nur um Programme für die Befehlszeile handeln muss. Ein Beispiel für einen grafischen Paketmanager ist das bekannte Synaptic oder das oben im Bild gezeigte Muon. Auch die Software Center Ihrer Distribution sind i. d. R. nur eine grafische Oberfläche, die im Hintergrund Paketmanager wie aptoder DNF verwenden.

Schlußbemerkung

Ich möchte hier gar nicht weiter ins Detail gehen, auch wenn es sicherlich noch einiges zu sagen gäbe. Es ist aber zu befürchten, dass wir sonst vom Hundertsten ins Tausendste kommen und den Zweck dieses Artikels aus den Augen verlieren. Mein Ziel war es, ein grundsätzliches Verständnis über die Funktionsweise von Paketmanagern zu schaffen.

Auch habe ich die “neuen” universellen Paketformate wie Snap und Flatpak hier ausgelassen. Hierzu werden ich ggf. einen eigenen Artikel schreiben.

Ich hoffe aber, dass Sie ein besseren Verständnis der Paketverwaltung in Linux erhalten haben.

Trenner


Dieser Artikel ist eine leicht bearbeitete Übersetzung eines Artikels von Abhishek Prakash und erschien zuerst auf It’s FOSS. Lizenz: CC BY-SA 4.0


ikoch
ERSTELLT VON
ikoch