Paket-Manager

A Paket-Manager oder Paketmanagementsystem ist eine Sammlung von Softwaretools, die den Prozess der Installation, Aktualisierung, Konfiguration und Entfernen von Computerprogrammen für a automatisiert Computer auf konsequente Weise.[1]
Ein Paketmanager befasst sich mit Pakete, Verteilungen von Software und Daten in Archivdateien. Pakete enthalten Metadaten, wie der Name der Software, Beschreibung seines Zwecks, Versionsnummer, Lieferanten, Überprüfung (vorzugsweise a Kryptografische Hash -Funktion) und eine Liste von Abhängigkeiten notwendig, damit die Software ordnungsgemäß ausgeführt wird. Bei der Installation wird Metadaten in einer lokalen Paketdatenbank gespeichert. Paketverwalter unterhalten in der Regel eine Datenbank mit Softwareabhängigkeiten und Versionsinformationen, um Software -Nichtübereinstimmungen und fehlende Voraussetzungen zu verhindern. Sie arbeiten eng mit Software -Repositories, Binär -Repository -Manager, und App Stores.
Paketmanager sind so konzipiert, dass man die Bedürfnisse manueller Installationen und Aktualisierungen beseitigt. Dies kann besonders für große Unternehmen nützlich sein, deren Betriebssysteme normalerweise aus Hunderten oder sogar Zehntausenden von verschiedenen Softwarepaketen bestehen.[2]
Geschichte
Frühe Paketmanager ab 1994 hatten keine automatische Abhängigkeitsauflösung[3] konnte jedoch den Prozess des Hinzufügens und Entfernens von Software aus einem laufenden System bereits drastisch vereinfachen.[4]
Gegen 1995 beginnend mit CPANPaketmanager begannen, Pakete aus einem Repository herunterzuladen, die Abhängigkeiten automatisch aufzulösen und sie nach Bedarf zu installieren, wodurch die Installation, Deinstallation und Aktualisierung von Software von einem System erleichtert wird.[5]
Funktionen

Ein Softwarepaket ist ein Archivdatei Enthält ein Computerprogramm sowie die erforderlichen Metadaten für den Einsatz. Das Computerprogramm kann in sein Quellcode Das muss zuerst zusammengestellt und gebaut werden.[6] Die Paketmetadaten enthalten Paketbeschreibung, Paketversion und Abhängigkeiten (andere Pakete, die vorher installiert werden müssen).
Paketmanager werden mit der Aufgabe beauftragt, Softwarepakete auf dem Befehl des Benutzers zu finden, zu installieren, zu verwalten oder zu deinstallieren. Zu den typischen Funktionen eines Paketverwaltungssystems gehören:
- Arbeiten mit Dateibogenfahrer Paketarchive extrahieren
- Gewährleistung der Integrität und Authentizität des Pakets, indem sie deren überprüft Überprüfungen und digitale Zertifikate, beziehungsweise
- Nachschlagen, Herunterladen, Installieren oder Aktualisieren vorhandener Software von a Software -Repository oder Appstore
- Gruppierung von Paketen nach Funktion zur Reduzierung der Benutzerverwirrung
- Verwalten von Abhängigkeiten, um sicherzustellen, dass ein Paket mit allen erforderlichen Paketen installiert wird, um zu vermeiden. "Abhängigkeit Hölle"
Computersysteme, auf die sich verlassen Dynamische Bibliothek Verknüpfung statt von Statische Bibliothek Verknüpfung, ausführbare Bibliotheken von Maschinenanweisungen über Pakete und Anwendungen hinweg. In diesen Systemen führen komplexe Beziehungen zwischen verschiedenen Paketen, die unterschiedliche Versionen von Bibliotheken benötigen, zu einer Herausforderung, die umgangssprachlich als "bezeichnet wird"Abhängigkeit Hölle". An Microsoft Windows Systeme, dies wird auch genannt "Dll Hölle"Bei der Arbeit mit dynamisch verknüpften Bibliotheken. Ein gutes Paketmanagement ist für diese Systeme von entscheidender Bedeutung.[7] Das Framework -System von OpenStep war ein Versuch, dieses Problem zu lösen, indem mehrere Versionen von Bibliotheken gleichzeitig installiert werden konnten, und für Softwarepakete, gegen die sie verknüpft wurden.
Frontendungen für lokal zusammengestellte Pakete
Systemadministratoren Kann Software mit anderen Tools als Paketverwaltungssoftware installieren und verwalten. Zum Beispiel kann ein lokaler Administrator Download Entpackte Quellcode, kompilieren Sie ihn und installieren Sie ihn. Dies kann dazu führen, dass der Zustand des lokalen Systems ausfällt Synchronisation mit dem Zustand des Paketmanagers Datenbank. Der lokale Administrator muss zusätzliche Maßnahmen ergreifen, z.
Es stehen Tools zur Verfügung, um sicherzustellen, dass lokal zusammengestellte Pakete in das Paketverwaltung integriert sind. Für Verteilungen basierend auf .deb und .RPM Dateien sowie Slackware Linux gibt es Checkinstallund für rezeptbasierte Systeme wie z. Gentoo Linux und Hybridsysteme wie z. Arch LinuxEs ist möglich, zuerst ein Rezept zu schreiben, das dann sicherstellt, dass das Paket in die lokale Paketdatenbank passt.
Wartung der Konfiguration
Besonders problematisch mit Software Upgrades sind Upgrades von Konfigurationsdateien. Da Packungsmanager zumindest auf UNIX -Systemen als Erweiterungen von entstanden sind Datei -Archivierungs -DienstprogrammeSie können in der Regel Konfigurationsdateien entweder überschreiben oder behalten, anstatt Regeln auf sie anzuwenden. Es gibt Ausnahmen, die normalerweise für die Kernelkonfiguration gelten (die den Computer nach einem Neustart unbrauchbar machen). Probleme können verursacht werden, wenn sich das Format von Konfigurationsdateien ändert. Wenn beispielsweise die alte Konfigurationsdatei nicht explizit neue Optionen deaktiviert, die deaktiviert werden sollten. Einige Paketmanager, wie z. Debian's dpkgErmöglichen Sie die Konfiguration während der Installation. In anderen Situationen ist es wünschenswert, Pakete mit der Standardkonfiguration zu installieren und dann diese Konfiguration zu überschreiben, beispielsweise in kopflos Installationen zu einer großen Anzahl von Computern. Diese Art der vorkonfigurierten Installation wird auch von DPKG unterstützt.
Repositorys
Um den Benutzern mehr Kontrolle über die Art von Software zu geben, die sie auf ihrem System installiert werden können (und manchmal aufgrund gesetzlicher oder bequemer Gründe auf der Seite der Händler), wird die Software häufig von einer Reihe von heruntergeladen Software -Repositories.[8]
Upgrade -Unterdrückung
Wenn ein Benutzer mit der Paketverwaltungssoftware interagiert, um ein Upgrade herbeizuführen, ist es üblich, dem Benutzer die Liste der zu ausgeführten Aktionen zu präsentieren (normalerweise die Liste der zu aktualisierten Pakete und möglicherweise die alten und neuen Versionsnummern) und erlauben Sie dem Benutzer, das Upgrade entweder 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 nie aktualisieren, oder um sie nur zu aktualisieren, wenn kritische Schwachstellen oder Instabilitäten in der vorherigen Version gefunden werden, wie vom Packager der Software definiert. Dieser Prozess wird manchmal genannt Versionspinning.
Zum Beispiel:
- yum unterstützt dies mit der Syntax ausschließen = openOffice*[9]
- Pacman mit Ignorepkg = OpenOffice[10] (Unterdrückung der Upgrade von OpenOffice in beiden Fällen)
- dpkg und dselect Unterstützen Sie dies teilweise durch die halt Fahnen Sie in der Paketauswahl
- GEEIGNET erweitert die halt Fahnen Sie den komplexen "Pinning" -Mechanismus durch[11] (Benutzer können auch ein Paket auf die schwarze Liste stehen[12])
- Eignung hat "Hold" und "verboten" Flaggen
- Portage Unterstützt dies durch die Konfigurationsdatei von Paket.maske
Caskading -Paketentfernung
Einige der fortschrittlicheren Funktionen für Paketverwaltungen bieten "Cascading -Paketentfernung".[10] In, in denen alle Pakete, die vom Zielpaket abhängen, und alle Pakete, von denen nur das Zielpaket abhängt, abhängen, werden ebenfalls entfernt.
Vergleich von Befehlen
Obwohl die Befehle für jeden bestimmten Paketmanager spezifisch sind, sind sie in großem Umfang übersetzbar, da die meisten Paketmanager ähnliche Funktionen bieten.
Aktion | Zypper[13] | Pacman | geeignet | DNF (yum)) | Swupd[14] | Portage | Nix | Homebrew | Winget |
---|---|---|---|---|---|---|---|---|---|
Installationspaket | zypper in ${PKG} | pacman -S ${PKG} | apt install ${PKG} | dnf install ${PKG} | swupd bundle-add ${PKG} | emerge ${PKG} | nix-env -i ${PKG} | brew install ${PKG} | winget install %PKG% |
Paket entfernen | zypper rm -RU ${PKG} | pacman -R ${PKG} | apt remove ${PKG} | dnf remove --nodeps ${PKG} | swupd bundle-remove ${PKG} | emerge -C ${PKG} oder emerge --unmerge ${PKG} | nix-env -e ${PKG} | brew rm ${PKG} ( rm ist Kurzschrift für remove oder uninstall )) | winget uninstall %PKG% |
Paket (und Waisen) entfernen | zypper rm -u --force-resolution ${PKG} | pacman -Rs ${PKG} | apt autoremove ${PKG} | dnf remove ${PKG} | Swupd Bundle-Remove $ {Pkg} && \ Swupd Bundle-Remove-Orphans | emerge -c ${PKG} oder emerge --depclean ${PKG} | nix-env -e ${PKG} && nix-env -u | Brauen Sie RM $ {Pkg} && \ Brauen Sie Autoremove | winget uninstall %PKG% |
Aktualisieren Sie die Software -Datenbank | zypper ref | pacman -Sy | apt update | dnf check-update | swupd update --download oder swupd update --update-search-file-index | emerge --sync | nix-channel --upgrade | brew update | winget list > NUL |
Aktualisierbare Pakete anzeigen | zypper lu | pacman -Qu | apt list --upgradable | dnf check-update | swupd update -s oder swupd check-update | emerge -avtuDN --with-bdeps=y @world oder emerge -u --pretend @world ( -D ist Kurzschrift für --deep und-u ist Kurzschrift für --update .)) | Nix-Kanal-Upgrade && \ NIX -ENV -U && \ Nix-Collect-Müll | brew outdated | winget upgrade |
Waisen löschen und konfigurieren | zypper rm -u | pacman -Rsn $(pacman -Qdtq) | apt autoremove | dnf erase ${PKG} | Swupd Bundle-Remove-Orphans && \ Swupd sauber -alle | emerge --depclean | nix-collect-garbage -d | brew unlink ${PKG} && brew clean | - |
Waisen zeigen | zypper pa --orphaned --unneeded | pacman -Qdt | - | package-cleanup -q --leaves --exclude-bin ( -q ist Kurzschrift für --quiet .)) | swupd bundle-list --orphans | emerge -caD oder emerge --depclean --pretend | - | - | - |
Alle aktualisieren | zypper up | pacman -Syu | apt upgrade | dnf update | swupd update | emerge -u -D --with-bdeps=y @world | nix-env -u && nix-collect-garbage | brew upgrade | winget upgrade --all |
Das Arch Linux Pacman/Rosetta Wiki bietet einen umfangreichen Überblick.[15]
Häufigkeit
Paketmanager mögen dpkg haben bereits 1994 existiert.[16]
Linux -Verteilungen Ausgestattet an binären Paketen basiert stark auf Paketmanagementsystemen als Hauptmittel zur Verwaltung und Wartung von Software. Mobile Betriebssysteme wie z. Android (Linux-basiert), iOS (Unix-basiert), und Windows Phone Verlassen Sie sich fast ausschließlich auf die jeweiligen Anbieter. App Stores und verwenden Sie damit ihre eigenen dedizierten Paketmanagementsysteme.
Synaptisch, eine GUI für viele Linux -Paketmanager
Pacman
, ein CLI-Dienstprogramm für archbasierte VerteilungenOktopi, a Qt GUI für Pacman -Paketmanager
Pamac, a Gtk+ GUI für Pacman -Paketmanager
Apper, a Qt GUI für Packagekit
GNOME -Software, a Gtk GUI für Paketkit und Flatpak
Winget
, das Windows Package Manager Cli Nützlichkeit für Windows 10
Vergleich mit Installateuren
Ein Paketmanager wird häufig als "Installation Manager" bezeichnet, was zu einer Verwirrung zwischen Paketmanagern und führen kann Installateure. Die Unterschiede umfassen:
Kriterium | Paket-Manager | Installateur |
---|---|---|
Verschickt mit | Normalerweise 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 zu den Dateien und Ordnern des Betriebssystems handeln. Bestenfalls können sie sich bei einer Deinstallationsliste registrieren, ohne Installationsinformationen aufzudecken. |
Wartungsbereich | Potenziell alle Pakete auf dem System | Nur das Produkt, mit dem es gebündelt wurde |
Entwickelt von | Ein Paketanbieteranbieter | Mehrere Installationsprogrammanbieter |
Paketformat | Eine Handvoll bekannter Formate | Es könnte so viele Formate geben wie die Anzahl der Apps |
Paketformatkompatibilität | Kann konsumiert werden, solange der Paketmanager es unterstützt. Entweder hat neuere Versionen des Paketmanagers es weiter unterstützt, oder der Benutzer aktualisiert den Paketmanager nicht. | Der Installateur ist immer mit seinem kompatibel Archivformat, wenn es verwendet wird. Installateure können jedoch wie alle Computerprogramme von betroffen sein von Software Rot. |
Vergleich mit Build Automation Utility
Die meisten Software -Konfigurationsverwaltung Systeme behandeln Software und Bereitstellung von Software als separate, unabhängige Schritte. EIN Automatisierung bauen Nützlichkeit nimmt in der Regel menschlich lesbar Quellcode Dateien bereits auf einem Computer und automatisiert den Prozess der Konvertierung in ein binäres ausführbares Paket auf demselben oder Remote -Computer. Später lädt ein Paketmanager in der Regel auf einem anderen Computer die vorgefertigten binären ausführbaren Pakete über das Internet herunter und installiert sie.
Beide Arten von Werkzeugen haben jedoch viele Gemeinsamkeiten:
- Zum Beispiel die Abhängigkeitsgrafik Topologische Sortierung Wird in einem Paketmanager verwendet, um Abhängigkeiten zwischen binären Komponenten zu verarbeiten, wird auch in einem Build -Manager verwendet, um die Abhängigkeit zwischen Quellkomponenten zu verarbeiten.
- Zum Beispiel viele Makefiles Unterstützen Sie nicht nur ausführbare Erstellen, sondern installieren Sie sie auch mit
Installation machen
. - Zum Beispiel jeder Paketmanager für eine Quellverteilung- Portage, Zauberei, Homebrewusw.-Unterstützt das Konvertieren des menschlich-lesbaren Quellcodes in binäre ausführbare Ausführungen und die Installation.
Ein paar Werkzeuge wie z. Maak und A-a-p, sind für das Gebäude und die Bereitstellung ausgelegt und können entweder als Build -Automation -Dienstprogramm oder als Paketmanager oder beides verwendet werden.[17]
Gemeinsame Paketmanager und Formate
Universal Paket Manager
Auch bekannt als Binär -Repository -ManagerEs handelt sich um ein Software -Tool, um den Download und Speicher von Binärdateien, Artefakten und Paketen zu optimieren, die in der verwendeten und produziert werden Softwareentwicklungsprozess.[18] Diese Paketmanager wollen die Art und Weise, wie Unternehmen alle Pakettypen behandeln, standardisieren. Sie geben den Benutzern die Möglichkeit, Sicherheits- und Compliance -Metriken auf alle Artefakttypen anzuwenden. Universal -Paket -Manager wurden als im Zentrum von a bezeichnet DevOps Toolchain.[19]
Paketformate
Jeder Paketmanager stützt sich auf das Format und die Metadaten der Pakete, die er verwalten kann. Das heißt, Paketmanager benötigen Gruppen von Dateien, die für den jeweiligen Paketmanager zusammen mit geeigneten Metadaten wie Abhängigkeiten gebündelt werden können. Oft verwaltet ein Kernsatz von Dienstprogrammen die grundlegende Installation aus diesen Paketen, und mehrere Paketmanager verwenden diese Dienstprogramme, um zusätzliche Funktionen bereitzustellen.
Zum Beispiel, yum beruht auf Drehzahl als Backend. YUM erweitert die Funktionalität des Backends, indem sie Funktionen wie einfache Konfiguration für die Wartung eines Systems von Systemen hinzufügen. Als ein weiteres Beispiel die Synaptischer Paketmanager Bietet eine grafische Benutzeroberfläche mit der Verwendung der Erweitertes Verpackungstool (APT) Bibliothek, auf die sich wiederum verlassen dpkg für Kernfunktionen.
Außerirdischer ist ein Programm, das zwischen verschiedenen Konvertiten bekehrt Linux -Paketformate, Unterstützung der Konvertierung zwischen Linux Standard Base (LSB) konform .RPM Pakete, .Deb, Stampede (.lp), Solaris (.pkg) und Slackware (.tgz, .txz, .tbz, .tlz) Pakete.
In mobilen Betriebssystemen, Google Play konsumiert Android -Anwendungspaket (APK) Paketformat während Microsoft Store Verwendet Appx und Xap Formate. (Sowohl Google Play als auch Microsoft Store haben gleichnamige Paketmanager.)
Kostenlose und Open -Source -Softwaresysteme
Durch die Natur von Kostenlose und Open -Source -Software, Pakete unter ähnlichen und kompatiblen Lizenzen können für eine Reihe von Betriebssystemen verwendet werden. Diese Pakete können mit konfigurierbaren und intern komplexen Verpackungssystemen kombiniert und verteilt werden, um viele Permutationen der Software zu verarbeiten und Versionsspezifische Abhängigkeiten und Konflikte zu verwalten. Einige Verpackungssysteme von Free und Open Source -Software werden auch selbst als kostenlose und Open -Source -Software veröffentlicht. Ein typischer Unterschied zwischen dem Paketmanagement in proprietären Betriebssystemen wie Mac OS X und Windows und denjenigen in kostenloser und Open-Source-Software, wie z. Upgrade durch denselben Mechanismus, während die Paketmanager von Mac OS X und Windows nur von Apple bzw. Microsoft bereitgestellt werden (mit Ausnahme einiger Drittanbieter in Windows). Die Möglichkeit, Software von Drittanbietern kontinuierlich zu aktualisieren URL des entsprechenden Repositorys zur Konfigurationsdatei des Paketverwaltungsdatei.
Paketmanager auf Anwendungsebene
Neben den Anwendungsmanagern auf Systemebene gibt es einige Add-On-Paketmanager für Betriebssysteme mit begrenzten Funktionen und für Programmiersprachen in dem Entwickler die neuesten brauchen Bibliotheken.
Im Gegensatz zu Paketmanagern auf Systemebene konzentrieren sich Paketmanager auf Anwendungsebene auf einen kleinen Teil des Softwaresystems. Sie wohnen normalerweise in einem Verzeichnisbaum, der nicht vom Paketmanager auf Systemebene gepflegt wird, z. C: \ cygwin oder /opt/sw.[20] Dies ist jedoch möglicherweise nicht der Fall für die Paketmanager, die sich mit Programmierbibliotheken befassen, was zu einem möglichen Konflikt führt, da beide Paketmanager möglicherweise behaupten, eine Datei "besitzen" und möglicherweise Upgrades zu brechen.
Einfluss
Ian Murdock hatte kommentiert, dass das Paketmanagement "der größte Fortschritt ist Linux hat in die Branche gebracht ", dass es die Grenzen zwischen Betriebssystem und Anwendungen verwischt und es" einfacher, neue Innovationen [...] auf den Markt zu bringen und das Betriebssystem zu entwickeln ".[21]
Es gibt auch eine Konferenz für Paketmanager -Entwickler, die als PackagingCon bekannt sind. Es wurde 2021 mit dem Ziel gegründet, verschiedene Ansätze für das Paketmanagement zu verstehen.[22]
Siehe auch
- Abhängigkeit Hölle
- Installation (Computerprogramme)
- Liste der Softwarepaketverwaltungssysteme
- Manifestdatei
- Paketformat
Verweise
- ^ "Was ist ein Paketmanager?". Archiviert von das Original am 17. Oktober 2017. Abgerufen 19. Dezember 2018.
- ^ "Softwareverteilung". Dell Kace. Archiviert von das Original am 3. Oktober 2015. Abgerufen 11. Juli 2012.
- ^ "Die Geschichte des *Nix -Paketmanagements". Abgerufen 12. Oktober 2021.
- ^ "Eine Überprüfung der Veröffentlichung von Infomagics Dezember 1994". Abgerufen 12. Oktober 2021.
- ^ "Die Zeitleiste von Perl und seiner Kultur".
- ^ Ludovic Courtès, Funktionalpaketverwaltung mit Guix, Juni 2013, Madrid, Europäisches Lisp -Symposium 2013
- ^ "Linux -Repository -Klassifizierungsschemata". BRAINTICKLE.BLOGSPOT.COM. Abgerufen 1. März 2008.
- ^ "Centos Yum Pinning RPMs". Centos.org. Archiviert vom Original am 2. November 2007. Abgerufen 1. März 2008.
{{}}
: CS1 Wartung: Ungeeignete URL (Link) - ^ a b "Pacman (8) Manuelle Seite". archlinux.org. Abgerufen 1. März 2008.
- ^ "So halten Sie bestimmte Versionen von Paketen installiert (komplex)". Debian.org. Abgerufen 1. März 2008.
- ^ "Apt Pinning to Blacklist ein Paket". Archiviert von das Original am 22. Juli 2011. Abgerufen 19. August 2010.
- ^ "Dokumentation/SLES11". en.opensuse.org.
- ^ "SWUPD-Client/SWUPD.1.RST bei Master · Clearlinux/Swupd-Client · Github". github.com. Abgerufen 22. Juni 2022.
- ^ "Pacman/Rosetta - Archwiki". wiki.archlinux.org. Abgerufen 17. September 2017.
- ^ "DPKG Version 0.93.15 Quellcode". Archiviert von das Original am 2. April 2015. Abgerufen 19. Dezember 2018.
- ^ Eelco Dolstra, "Integration von Softwarekonstruktion und Software -Bereitstellung".
- ^ Waters, John K. (8. September 2015). "Jfrog veröffentlicht 'Universal' Artefact Repository". ADT Mag.Anwendungsentwicklungstrends Magazin.
- ^ Decoster, Xavier (18. August 2013). "Ein Überblick über das Nuget -Ökosystem". CodeProject.com.
- ^ "Fink - Zuhause". finkproject.org. Abgerufen 2. September 2021.
- ^ "Wie das Paketmanagement alles verändert hat".Ianmurdock.com.Archiviert von das Original am 23. Februar 2009. Abgerufen 1. März 2008.
- ^ "Packagingcon 2021 - Eine Konferenz für Entwickler und Packagler für Paketmanager" ". Verpackung-con.org. Abgerufen 2. September 2021.
Externe Links
- Paketverwaltung Cheatsheet Aus Distrowatch
- Archlinux Rosetta Stone - Befehlszeilenvergleich für Paketmanager
- UPKG Universal Package Manager Eine Wrapper, die die gleiche Syntax für alle Geschmacksrichtungen von Linux liefert