Paket-Manager - Package manager

Synaptic , Beispiel für einen Paketmanager mit vollem Funktionsumfang

Ein Paketmanager oder Paketverwaltungssystem ist eine Sammlung von Softwaretools, die den Prozess des Installierens, Aktualisierens, Konfigurierens und Entfernens von Computerprogrammen für das Betriebssystem eines Computers auf konsistente Weise automatisieren .

Frühe Paketmanager, wie pms von 1994, hatten keine automatische Abhängigkeitsauflösung, konnten aber bereits den Prozess des Hinzufügens und Entfernens von Software zu einem laufenden System drastisch vereinfachen. Um 1998, beginnend mit APT , begannen Paketmanager damit, Pakete aus einem Repository herunterzuladen, ihre Abhängigkeiten automatisch aufzulösen und sie nach Bedarf zu installieren, wodurch es viel einfacher wurde, Software von einem System zu installieren, zu deinstallieren und zu aktualisieren.

Ein Paketmanager behandelt Pakete , Softwareverteilungen und Daten in Archivdateien . Pakete enthalten Metadaten wie den Namen der Software, die Beschreibung ihres Zwecks, die Versionsnummer, den Hersteller, die Prüfsumme (vorzugsweise eine kryptografische Hash-Funktion ) und eine Liste der Abhängigkeiten, die für die ordnungsgemäße Ausführung der Software erforderlich sind. Bei der Installation werden Metadaten in einer lokalen Paketdatenbank gespeichert. Paketmanager pflegen in der Regel eine Datenbank mit Softwareabhängigkeiten und Versionsinformationen, um Softwarekonflikte und fehlende Voraussetzungen zu vermeiden. Sie arbeiten eng mit Software-Repositorys , Binär-Repository-Managern und App-Stores zusammen .

Paketmanager sind so konzipiert, dass keine manuellen Installationen und Updates erforderlich sind. Dies kann besonders für große Unternehmen nützlich sein, deren Betriebssysteme typischerweise aus Hunderten oder sogar Zehntausenden verschiedener Softwarepakete bestehen.

Funktionen

Illustration eines Paketmanagers, der zum Herunterladen neuer Software verwendet wird. Manuelle Aktionen können das Akzeptieren einer Lizenzvereinbarung oder die Auswahl einiger paketspezifischer Konfigurationsoptionen umfassen.

Ein Softwarepaket ist eine Archivdatei, die ein Computerprogramm sowie notwendige Metadaten für dessen Bereitstellung enthält. Das Computerprogramm kann im Quellcode vorliegen , der zuerst kompiliert und gebaut werden muss. Paketmetadaten umfassen Paketbeschreibung, Paketversion und Abhängigkeiten (andere Pakete, die zuvor installiert werden müssen).

Paketmanager haben die Aufgabe, Softwarepakete auf Befehl des Benutzers zu finden, zu installieren, zu warten oder zu deinstallieren. Typische Funktionen eines Paketverwaltungssystems sind:

  • Arbeiten mit Dateiarchivern zum Extrahieren von Paketarchiven
  • Die Gewährleistung der Integrität und Authentizität des Pakets durch ihre Überprüfung Prüfsummen und digitale Zertifikate bzw.
  • Nachschlagen, Herunterladen, Installieren oder Aktualisieren vorhandener Software aus einem Software-Repository oder App Store
  • Gruppieren von Paketen nach Funktion, um die Verwirrung der Benutzer zu verringern
  • Verwalten von Abhängigkeiten, um sicherzustellen, dass ein Paket mit allen benötigten Paketen installiert ist, um so die " Abhängigkeits-Hölle " zu vermeiden

Herausforderungen mit Shared Libraries

Computersysteme, die auf einer dynamischen Bibliotheksverknüpfung anstelle einer statischen Bibliotheksverknüpfung beruhen , teilen sich ausführbare Bibliotheken von Maschinenbefehlen über Pakete und Anwendungen hinweg. In diesen Systemen führen komplexe Beziehungen zwischen verschiedenen Paketen, die unterschiedliche Versionen von Bibliotheken erfordern, zu einer Herausforderung, die umgangssprachlich als " Abhängigkeitshölle " bekannt ist. Auf Microsoft Windows- Systemen wird dies auch als „ DLL-Hölle “ bezeichnet, wenn mit dynamisch gelinkten Bibliotheken gearbeitet wird. Eine gute Paketverwaltung ist auf diesen Systemen von entscheidender Bedeutung. Das Framework-System von OPENSTEP war ein Versuch, dieses Problem zu lösen, indem es ermöglichte, mehrere Versionen von Bibliotheken gleichzeitig zu installieren und für Softwarepakete anzugeben, mit welcher Version sie verknüpft wurden.

Frontends für lokal kompilierte Pakete

Systemadministratoren können Software mit anderen Tools als der Paketverwaltungssoftware installieren und warten. Ein lokaler Administrator kann beispielsweise entpackten Quellcode herunterladen , kompilieren und installieren. Dies kann dazu führen, dass der Status des lokalen Systems nicht mehr mit dem Status der Datenbank des Paketmanagers synchronisiert ist . Der lokale Administrator muss zusätzliche Maßnahmen ergreifen, wie z. B. die manuelle Verwaltung einiger Abhängigkeiten oder die Integration der Änderungen in den Paketmanager.

Es stehen Tools zur Verfügung, um sicherzustellen, dass lokal kompilierte Pakete in die Paketverwaltung integriert werden. Für Distributionen basierend auf .deb- und .rpm- Dateien sowie Slackware Linux gibt es CheckInstall , und für rezeptbasierte Systeme wie Gentoo Linux und Hybridsysteme wie Arch Linux ist es möglich, zuerst ein Rezept zu schreiben, das dann sicherstellt dass das Paket in die lokale Paketdatenbank passt.

Pflege der Konfiguration

Besonders problematisch bei Software- Upgrades sind Upgrades von Konfigurationsdateien. Da Paketmanager, zumindest auf Unix-Systemen, als Erweiterungen von Dienstprogrammen zur Dateiarchivierung entstanden sind , können sie normalerweise nur Konfigurationsdateien entweder überschreiben oder beibehalten, anstatt Regeln auf sie anzuwenden. Es gibt Ausnahmen, die normalerweise für die Kernel-Konfiguration gelten (die den Computer bei einem Defekt nach einem Neustart unbrauchbar macht). Es können Probleme auftreten, wenn sich das Format der Konfigurationsdateien ändert; zum Beispiel, wenn die alte Konfigurationsdatei neue Optionen, die deaktiviert werden sollten, nicht explizit deaktiviert. Einige Paketmanager, wie Debian ‚s dpkg , ermöglichen die Konfiguration während der Installation. In anderen Situationen ist es wünschenswert, Pakete mit der Standardkonfiguration zu installieren und diese Konfiguration dann zu überschreiben, beispielsweise bei Headless- Installationen auf einer großen Anzahl von Computern. Diese Art der vorkonfigurierten Installation wird auch von dpkg unterstützt.

Repositorys

Um Benutzern mehr Kontrolle über die Arten von Software zu geben, die sie auf ihrem System installieren dürfen (und manchmal aus rechtlichen oder praktischen Gründen auf Seiten der Händler), wird Software häufig von einer Reihe von Software-Repositorys heruntergeladen .

Upgrade-Unterdrückung

Wenn ein Benutzer mit der Paketverwaltungssoftware interagiert, um ein Upgrade durchzuführen, ist es üblich, dem Benutzer die Liste der auszuführenden Aktionen vorzulegen (normalerweise die Liste der zu aktualisierenden Pakete und möglicherweise die alte und neue Versionsnummer). , und erlauben Sie dem Benutzer, entweder das Upgrade in großen Mengen zu akzeptieren oder einzelne Pakete für Upgrades auszuwählen. Viele Paketmanager können so konfiguriert werden, dass sie bestimmte Pakete niemals aktualisieren oder sie nur aktualisieren, wenn kritische Schwachstellen oder Instabilitäten in der vorherigen Version gefunden wurden, wie vom Paketierer der Software definiert. Dieser Vorgang wird manchmal als Versionspinning bezeichnet .

Zum Beispiel:

  • yum unterstützt dies mit der Syntax exclude=openoffice*
  • pacman mit IgnorePkg= openoffice (um das Upgrade von Openoffice in beiden Fällen zu unterdrücken)
  • dpkg und dselect unterstützen dies teilweise durch das Hold- Flag in Paketauswahlen
  • APT erweitert das Hold- Flag durch den komplexen "Pinning"-Mechanismus (Benutzer können ein Paket auch auf die Blacklist setzen)
  • aptitude hat "Hold"- und "Forbid"-Flags
  • portage unterstützt dies durch die package.mask Konfigurationsdatei

Kaskadierende Paketentfernung

Einige der fortgeschritteneren Paketverwaltungsfunktionen bieten die "kaskadierende Paketentfernung", bei der alle Pakete, die vom Zielpaket abhängig sind, und alle Pakete, von denen nur das Zielpaket abhängt, ebenfalls entfernt werden.

Vergleich der Befehle

Obwohl die Befehle für jeden einzelnen Paketmanager spezifisch sind, sind sie weitgehend übersetzbar, da die meisten Paketmanager ähnliche Funktionen bieten.

Handlung zypper pacman geeignet dnf ( lecker ) portage Nix Hausbrauen
Installationspaket zypper in PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
nix-env -i PACKAGE
brew install PACKAGE
Paket entfernen zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE oder
emerge --unmerge PACKAGE
nix-env -e PACKAGE
brew uninstall PACKAGE
Paket+Waisen entfernen zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE oder
emerge --depclean PACKAGE
nix-env -e PACKAGE && nix-env -u
brew uninstall PACKAGE && brew autoremove
Softwaredatenbank aktualisieren zypper ref pacman -Sy apt update dnf check-update emerge --sync
nix-channel --upgrade
brew update
aktualisierbare Pakete anzeigen zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world oder
emerge --update --pretend @world
nix-channel --upgrade && nix-env -u && nix-collect-garbage
brew outdated
Waisen + Konfiguration löschen zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
nix-collect-garbage -d
brew unlink PACKAGE && brew clean
zeige Waisen zypper pa --orphaned --unneeded pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD oder
emerge --depclean --pretend
Alle aktualisieren zypper up pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world
nix-env -u && nix-collect-garbage
brew upgrade

Einen ausführlichen Überblick bietet das Arch Linux Pacman/Rosetta-Wiki.

Häufigkeit

Paketmanager wie dpkg gab es bereits 1994.

Linux-Distributionen, die auf Binärpakete ausgerichtet sind, verlassen sich stark auf Paketverwaltungssysteme als primäres Mittel zur Verwaltung und Wartung von Software. Mobile Betriebssysteme wie Android (Linux-basiert), iOS ( Unix-basiert ) und Windows Phone verlassen sich fast ausschließlich auf die App-Stores ihrer jeweiligen Anbieter und nutzen daher eigene dedizierte Paketverwaltungssysteme.

Vergleich mit Installateuren

Ein Paketmanager wird oft als "Installationsmanager" bezeichnet, was zu einer Verwechslung zwischen Paketmanagern und Installern führen kann . Zu den Unterschieden zählen:

Kriterium Paket-Manager Installateur
Versand mit Normalerweise ist das Betriebssystem Jedes Computerprogramm
Standort der Installationsinformationen Eine zentrale Installationsdatenbank Es liegt ganz im Ermessen des Installateurs. Es kann sich um eine Datei im Ordner der App oder zwischen den Dateien und Ordnern des Betriebssystems handeln. Bestenfalls können sie sich bei einer Deinstallationsliste registrieren, ohne Installationsinformationen preiszugeben.
Wartungsumfang Potenziell alle Pakete auf dem System Nur das Produkt, mit dem es gebündelt wurde
Entwickelt von Ein Anbieter von Paketmanagern Mehrere Installer-Anbieter
Paketformat Eine Handvoll bekannter Formate Es könnte so viele Formate geben, wie es Apps gibt
Kompatibilität des Paketformats Kann konsumiert werden, solange der Paketmanager dies unterstützt. Entweder unterstützen neuere Versionen des Paketmanagers ihn weiterhin oder der Benutzer aktualisiert den Paketmanager nicht. Das Installationsprogramm ist immer mit seinem Archivformat kompatibel , falls es eines verwendet. Installationsprogramme können jedoch, wie alle Computerprogramme, von Software-Fäulnis betroffen sein .

Vergleich mit dem Dienstprogramm zur Build-Automatisierung

Die meisten Softwarekonfigurationsverwaltungssysteme behandeln das Erstellen von Software und das Bereitstellen von Software als separate, unabhängige Schritte. Ein Dienstprogramm zur Build-Automatisierung verwendet normalerweise lesbare Quellcodedateien , die sich bereits auf einem Computer befinden, und automatisiert den Prozess der Konvertierung in ein binäres ausführbares Paket auf demselben Computer. Später lädt ein Paketmanager, der normalerweise auf einem anderen Computer läuft, diese vorgefertigten ausführbaren Binärpakete über das Internet herunter und installiert sie.

Beide Arten von Tools haben jedoch viele Gemeinsamkeiten:

  • Zum Beispiel wird die topologische Sortierung des Abhängigkeitsgraphen, die in einem Paketmanager verwendet wird, um Abhängigkeiten zwischen binären Komponenten zu handhaben, auch in einem Build-Manager verwendet, um die Abhängigkeit zwischen Quellkomponenten zu handhaben.
  • Viele Makefiles unterstützen beispielsweise nicht nur das Erstellen von ausführbaren Dateien, sondern auch die Installation mit make install.
  • Zum Beispiel unterstützt jeder Paketmanager für eine quellbasierte DistributionPortage , Sorcery , Homebrew usw. – die Umwandlung von menschenlesbarem Quellcode in ausführbare Binärdateien und deren Installation.

Einige Tools wie Maak und AAP sind so konzipiert, dass sie sowohl das Erstellen als auch das Deployment verarbeiten und können entweder als Build-Automatisierungsdienstprogramm oder als Paketmanager oder beides verwendet werden.

Gängige Paketmanager und Formate

Universeller Paketmanager

Auch als Binär-Repository-Manager bekannt , ist es ein Software-Tool, das entwickelt wurde, um das Herunterladen und Speichern von Binärdateien, Artefakten und Paketen zu optimieren, die im Softwareentwicklungsprozess verwendet und produziert werden . Diese Paketmanager zielen darauf ab, den Umgang von Unternehmen mit allen Pakettypen zu standardisieren. Sie geben Benutzern die Möglichkeit, Sicherheits- und Compliance-Metriken für alle Artefakttypen anzuwenden. Universelle Paketmanager werden als das Zentrum einer DevOps-Toolchain bezeichnet .

Paketformate

Jeder Paketmanager verlässt sich auf das Format und die Metadaten der Pakete, die er verwalten kann. Das heißt, Paketmanager benötigen Dateigruppen, die für den jeweiligen Paketmanager zusammen mit den entsprechenden Metadaten, wie z. B. Abhängigkeiten, gebündelt werden. Häufig verwaltet ein Kernsatz von Dienstprogrammen die grundlegende Installation dieser Pakete, und mehrere Paketmanager verwenden diese Dienstprogramme, um zusätzliche Funktionen bereitzustellen.

Zum Beispiel verlässt sich yum auf rpm als Backend. Yum erweitert die Funktionalität des Backends um Funktionen wie die einfache Konfiguration zur Wartung eines Netzwerks von Systemen. Als weiteres Beispiel bietet der Synaptic Package Manager eine grafische Benutzeroberfläche unter Verwendung der Advanced Packaging Tool (apt) -Bibliothek, die wiederum auf dpkg für die Kernfunktionalität beruht .

Alien ist ein Programm, das zwischen verschiedenen Linux-Paketformaten konvertiert und die Konvertierung zwischen Linux Standard Base (LSB) -kompatiblen .rpm- Paketen, .deb , Stampede (.slp), Solaris (.pkg) und Slackware ( .tgz , .txz , . tbz, .tlz) Pakete.

In mobilen Betriebssystemen verwendet Google Play das Paketformat des Android-Anwendungspakets (APK), während der Windows Store die Formate APPX und XAP verwendet. (Sowohl Google Play als auch Windows Store haben gleichnamige Paketmanager.)

Freie und Open Source Softwaresysteme

Aufgrund der Natur freier und quelloffener Software sind Pakete unter ähnlichen und kompatiblen Lizenzen für die Verwendung auf einer Reihe von Betriebssystemen verfügbar. Diese Pakete können mit konfigurierbaren und intern komplexen Paketierungssystemen kombiniert und verteilt werden, um viele Software-Permutationen zu handhaben und versionspezifische Abhängigkeiten und Konflikte zu verwalten. Einige Verpackungssysteme von freier und quelloffener Software werden auch selbst als freie und quelloffene Software freigegeben. Ein typischer Unterschied zwischen der Paketverwaltung in proprietären Betriebssystemen wie Mac OS X und Windows und denen in freier und Open-Source-Software wie Linux besteht darin, dass freie und Open-Source-Softwaresysteme auch die Installation von Paketen von Drittanbietern zulassen und über denselben Mechanismus aktualisiert werden, während die Paketmanager von Mac OS X und Windows nur Software von Apple bzw. Microsoft aktualisieren (mit Ausnahme einiger Treiber von Drittanbietern in Windows). Die Möglichkeit, Software von Drittanbietern kontinuierlich zu aktualisieren, wird in der Regel durch Hinzufügen der URL des entsprechenden Repositorys zur Konfigurationsdatei der Paketverwaltung hinzugefügt .

Paketmanager auf Anwendungsebene

Neben den Anwendungsmanagern auf Systemebene gibt es einige Add-On-Paketmanager für Betriebssysteme mit eingeschränkten Fähigkeiten und für Programmiersprachen, in denen Entwickler die neuesten Bibliotheken benötigen .

Im Gegensatz zu Paketmanagern auf Systemebene konzentrieren sich Paketmanager auf Anwendungsebene auf einen kleinen Teil des Softwaresystems. Sie befinden sich normalerweise in einem Verzeichnisbaum, der nicht vom Paketmanager auf Systemebene verwaltet wird, wie z. B. c:\cygwin oder /opt/sw . Dies ist jedoch bei Paketmanagern, die sich mit Programmierbibliotheken befassen, möglicherweise nicht der Fall, was zu einem möglichen Konflikt führt, da beide Paketmanager behaupten können, eine Datei zu "besitzen" und Upgrades unterbrechen könnten.

Auswirkung

Ian Murdock hatte kommentiert, dass Paketverwaltung "der größte Fortschritt ist, den Linux der Branche gebracht hat", dass es die Grenzen zwischen Betriebssystem und Anwendungen verwischt und es "leichter macht, neue Innovationen [...] Marktplatz und [...] entwickeln das Betriebssystem".

Es gibt auch eine Konferenz für Entwickler von Paketmanagern, die als PackagingCon bekannt ist. Es wurde 2021 mit dem Ziel gegründet, verschiedene Ansätze des Paketmanagements zu verstehen.

Siehe auch

Verweise

Externe Links