Was sind Paket-Abhängigkeiten?

Di, 14. März 2023, Ralf Hersel

Hinweis: Dieser Artikel richtet sich an Linux-Einsteiger:innen.

Bestimmt habt ihr schon von Paketabhängigkeiten in Linux gehört und euch gefragt, was das ist. Abhängigkeiten mögen verwirrend erscheinen, aber es gibt Werkzeuge in Linux, die sicherstellen, dass jedes Programm, das man installiert, alle benötigten Komponenten hat.


Linux-Abhängigkeiten sind Dinge, die ein Programm benötigt, um zu laufen. Das liegt daran, dass Linux-Entwickler dazu neigen, Programme auf modulare Weise zu schreiben. Dies geht auf die "Unix-Philosophie" zurück, Programme aus kleineren Komponenten aufzubauen.

Abhängigkeiten sind normalerweise gemeinsam genutzte Bibliotheken. Sie können für Dinge wie den Zugriff auf Datenbanken, die Verwendung von Netzwerkprotokollen oder das Zeichnen von grafischen Elementen auf dem Bildschirm verwendet werden. Abhängigkeiten können auch komplette Programme sein. Ein gängiges Muster in der Linux-Welt ist die Entwicklung eines GUI-Frontends für ein bestehendes Terminal-Programm, wie Pamac für Pacman bei Arch-basierenden Distributionen.


Die Verwendung gemeinsam genutzter Bibliotheken erleichtert die Entwicklung, da die Entwickler nicht jedes Mal neue Wege finden müssen, um eine Anwendung zu erstellen. Du kannst den Quellcode von der Webseite eines Freien Software Projektes herunterladen und versuchen, ihn selbst zu kompilieren. Dabei wirst du oft die Fehlermeldung erhalten, dass etwas fehlt. Das liegt daran, dass diese Projekte keine Abhängigkeiten mit ihrem Programm mitliefern. Sie gehen davon aus, dass diese entweder bereits installiert sind oder du bereit bist, dies zu tun.

Um dieses Problem zu entschärfen, begannen Linux-Distributionen damit, Werkzeuge für die Paketverwaltung einzubauen, die Abhängigkeiten aufspürten, sie über das Internet herunterluden, installierten und auf dem neuesten Stand hielten, wenn neue Versionen herauskamen.

Flatpak und Snap sind die neuesten Versuche, Abhängigkeiten zu verwalten, indem sie mit einer Anwendung ausgeliefert werden. Auf diese Weise können die Abhängigkeiten und die Anwendung besser synchron gehalten werden. Die Entwickler haben mehr Kontrolle darüber, wie sich eine Anwendung verhält, wenn sie die Benutzerin erreicht. Dadurch werden jedoch die Anwendungen grösser, da jedes Mal alle Abhängigkeiten mitgeliefert werden, obwohl sie vielleicht bereits vorhanden sind.

Alle Paketmanager sind in der Lage, die Abhängigkeiten für eine Anwendung auszugeben. Hier ist ein Beispiel für die Abhängigkeiten der Anwendung GIMP, dargestellt vom Manjaro-Paketmanger Pamac:


Je nach Distribution und dem verwendeten Paketmanager sehen die Befehle zum Anzeigen der Abhängigkeiten anders aus:

  • Debian-basiert: apt show [Paketname]
  • Arch-basiert: pacman -Si [Paketname]
  • Manjaro: pamac info [Paketname]
  • Red Hat-basiert: dnf deplist [Paketname]

Beim modernen Container-Format Flatpak, kann man die Paket-Abhängigkeiten nicht anzeigen lassen, weil die abhängigen Pakete im Container mitgeliefert werden, bzw. durch eine Laufzeitumgebung bereitgestellt werden. Am Beispiel der Anwendung Audacity, sehen wir, dass die Laufzeitumgebung org.gnome.Platform/x86_64 in der Version 43 zum Einsatz kommt:

In der Laufzeitumgebung sind eine Vielzahl von Pakten enthalten, die von (in diesem Beispiel) Gnome-Anwendungen vorausgesetzt werden. Wer mehr darüber wissen möchte, findet auf dieser Seite die verfügbaren Umgebungen und deren Inhalte.

Wer dennoch wissen möchte, welche Pakete Audacity benötigt, kann einen der weiter oben genannten Befehle verwenden. Die Paketmanager liefern diese Information nämlich unabhängig davon, ob eine Anwendung installiert ist, oder nicht. Für Audacity lautet der Befehl: pamac info audacity.

Abhängigkeiten sind unter Linux gar nicht so geheimnisvoll. Sie zeigen, wie Linux-Programme aus kleineren Komponenten aufgebaut sind.

Quelle: https://linuxkurs.ch/kurs/Programme.html

Tags

Pakete, Paketmanager, DEB, Flatpak, Abhängigkeiten