RPM-Paketmanager - RPM Package Manager
Originalautor(en) | Erik Troan, Marc Ewing , Red Hat |
---|---|
Entwickler | Community & Red Hat |
Erstveröffentlichung | 1997 |
Stabile Version | 4.16.1.3 / 22. März 2021
|
Vorschauversion | 4.17.0 Alpha / 26. April 2021
|
Repository | |
Geschrieben in | C , Perl |
Betriebssystem | Linux , Unix-ähnlich |
Typ | Paketverwaltungssystem |
Lizenz | GPL |
Webseite | U/min |
RPM Package Manager ( RPM ) (ursprünglich Red Hat Package Manager , jetzt ein rekursives Akronym ) ist ein kostenloses und quelloffenes Paketverwaltungssystem . Der Name RPM bezieht sich auf das .rpm
Dateiformat und das Paketverwaltungsprogramm selbst. RPM war in erster Linie für Linux-Distributionen gedacht ; das Dateiformat ist das Basispaketformat der Linux Standard Base .
Obwohl es für die Verwendung in Red Hat Linux entwickelt wurde , wird RPM heute in vielen Linux-Distributionen wie Fedora , CentOS , openSUSE , OpenMandriva und Oracle Linux verwendet . Es wurde auch auf einige andere Betriebssysteme wie Novell NetWare (ab Version 6.5 SP3), IBMs AIX (ab Version 4), IBM i und ArcaOS portiert .
Ein RPM-Paket kann einen beliebigen Satz von Dateien enthalten. Die meisten RPM-Dateien sind „binäre RPMs“ (oder BRPMs), die die kompilierte Version einiger Software enthalten. Es gibt auch „Quell-RPMs“ (oder SRPMs), die den Quellcode enthalten, der zum Erstellen eines Binärpakets verwendet wird. Diese haben ein entsprechendes Tag im Dateiheader, das sie von normalen (B)RPMs unterscheidet, wodurch sie bei der Installation nach /usr/src extrahiert werden. SRPMs tragen üblicherweise die Dateierweiterung „.src.rpm“ (.spm auf Dateisystemen beschränkt auf 3 Erweiterungszeichen, zB altes DOS FAT ).
Geschichte
RPM wurde ursprünglich 1997 von Erik Troan und Marc Ewing geschrieben, basierend auf pms
, rpp
, und pm
Erfahrungen.
pm
wurde von Rik Faith und Doug Hoffman im Mai 1995 für Red Hat Software geschrieben, sein Design und seine Implementierungen stark beeinflusst von pms
, einem Paketverwaltungssystem von Faith und Kevin Martin im Herbst 1993 für die Bogus Linux Distribution. pm
behält das " Pristine Sources + Patches"-Paradigma von bei pms
, während es Funktionen hinzufügt und willkürliche Einschränkungen in der Implementierung beseitigt. pm
bietet stark verbesserte Datenbankunterstützung zum Verfolgen und Verifizieren installierter Pakete
Merkmale
Für einen Systemadministrator, der die Softwareinstallation und -wartung durchführt, hat die Verwendung der Paketverwaltung anstelle der manuellen Erstellung Vorteile wie Einfachheit, Konsistenz und die Möglichkeit, diese Prozesse zu automatisieren und nicht interaktiv zu machen. rpm verwendet Berkeley DB als Backend-Datenbank, obwohl es seit 4.15 im Jahr 2019 das Erstellen von rpm-Paketen ohne Berkeley DB ( –disable-bdb
) unterstützt.
Zu den Funktionen von RPM gehören:
- RPM-Pakete können mit GPG und MD5 kryptografisch verifiziert werden
- Original- Quellarchiv (e) (z. B.
.tar.gz
,.tar.bz2
) sind in SRPMs enthalten, was die Überprüfung erleichtert - Delta-Update : PatchRPMs und DeltaRPMs, das RPM-Äquivalent einer Patch- Datei, können RPM-installierte Software inkrementell aktualisieren
- Automatische Build-Zeit-Abhängigkeitsbewertung.
Lokale Operationen
Pakete können aus einer bestimmten Distribution stammen (zum Beispiel Red Hat Enterprise Linux ) oder von anderen Parteien dafür erstellt werden (zum Beispiel RPM Fusion für Fedora). Zirkuläre Abhängigkeiten zwischen voneinander abhängigen RPMs (sog. „ Dependency Hell “) können problematisch sein; in solchen Fällen muss ein einziger Installationsbefehl alle relevanten Pakete angeben.
Repositorys
RPMs werden oft zentral in einem oder mehreren Repositories im Internet gesammelt . Eine Site hat oft ihre eigenen RPM-Repositorys, die entweder als lokale Spiegel dieser Internet-Repositorys fungieren oder lokal gepflegte Sammlungen nützlicher RPMs sein können.
Frontends
Mehrere Frontends für RPM erleichtern den Prozess des Abrufens und Installierens von RPMs aus Repositorys und helfen beim Auflösen ihrer Abhängigkeiten. Diese schließen ein:
- yum verwendet in Fedora , CentOS 5 und höher, Red Hat Enterprise Linux 5 und höher, Scientific Linux , Yellow Dog Linux und Oracle Linux
- DNF , eingeführt in Fedora 18 (Standard seit 22 ), Red Hat Enterprise Linux 8 und CentOS Linux 8.
- up2date verwendet in Red Hat Enterprise Linux , CentOS 3 und 4 und Oracle Linux
- Zypper verwendet in Mer (und damit Sailfish OS), MeeGo , openSUSE und SUSE Linux Enterprise
- urpmi verwendet in Mandriva Linux , ROSA Linux und Mageia
- apt-rpm , eine Portierung von Debians Advanced Packaging Tool (APT), das in Ark Linux, PCLinuxOS und ALT Linux verwendet wird
- Smart Package Manager , verwendet in Unity Linux, verfügbar für viele Distributionen, einschließlich Fedora .
-
rpmquery
, ein Befehlszeilen-Dienstprogramm, das (zum Beispiel) in Red Hat Enterprise Linux verfügbar ist
Lokale RPM-Installationsdatenbank
Hinter den Kulissen des Paketmanagers arbeitet die RPM-Datenbank, die in /var/lib/rpm
. Es verwendet Berkeley DB als Back-End. Es besteht aus einer einzigen Datenbank ( Packages
), die alle Metainformationen der installierten RPMs enthält. Für Indizierungszwecke werden mehrere Datenbanken erstellt, die Daten replizieren, um Abfragen zu beschleunigen. Die Datenbank wird verwendet, um alle Dateien zu verfolgen, die geändert und erstellt werden, wenn ein Benutzer (mit RPM) ein Paket installiert, sodass der Benutzer (über RPM) die Änderungen rückgängig machen und das Paket später entfernen kann. Wenn die Datenbank beschädigt wird (was möglich ist , wenn der RPM - Client getötet ), können die Indexdatenbanken mit dem neu erstellt werden rpm --rebuilddb
Befehl.
Beschreibung
Obwohl das RPM-Format für verschiedene Linux-Distributionen gleich ist , können die detaillierten Konventionen und Richtlinien zwischen ihnen variieren.
Dateiname und Label des Pakets
Ein RPM wird in einer einzigen Datei geliefert, normalerweise mit einem Dateinamen im Format:
-
<name>-<version>-<release>.src.rpm
für Quellpakete, oder -
<name>-<version>-<release>.<architecture>.rpm
für Binärdateien.
Im Dateinamen des Pakets libgnomeuimm-2.0-2.0.0_3.i386.rpm
ist beispielsweise das <name>
is libgnomeuimm
, das <version>
is 2.0
, das <release>
is 2.0.0_3
und das <architecture>
is i386
. Das zugehörige Quellpaket würde benanntlibgnomeuimm-2.0-2.0.0_3.src.rpm
RPMs mit der noarch.rpm
Erweiterung hängen nicht von einer bestimmten CPU-Architektur ab. Diese RPMs können beispielsweise Grafiken und Text enthalten, die von anderen Programmen verwendet werden können. Sie können auch Shell-Skripte oder Programme enthalten, die in anderen interpretierten Programmiersprachen wie Python geschrieben sind .
Zum RPM-Inhalt gehört auch ein Paketetikett , das die folgenden Informationen enthält:
- Softwarename
- Softwareversion (die Version aus der ursprünglichen Upstream- Quelle der Software)
- Paket-Release (die Häufigkeit, mit der das Paket mit derselben Version der Software neu erstellt wurde). Dieses Feld wird auch oft verwendet, um die spezifische Distribution anzugeben, für die das Paket bestimmt ist, indem Zeichenfolgen wie "mdv" (früher "mdk") ( Mandriva Linux ), "mga" ( Mageia ), "fc4" ( Fedora Core 4) angehängt werden. , "rhl9" (Red Hat Linux 9), "suse100" ( SUSE Linux 10.0) usw.
- Architektur, für die das Paket erstellt wurde (i386, i686, x86_64, ppc usw.)
Die Paketetikettenfelder müssen nicht mit dem Dateinamen übereinstimmen.
Bibliotheksverpackung
Bibliotheken werden in zwei separaten Paketen für jede Version verteilt. Einer enthält den vorkompilierten Code zur Verwendung zur Laufzeit, während der zweite die zugehörigen Entwicklungsdateien wie Header usw. enthält. Diese Pakete haben "-devel" an ihr Namensfeld angehängt. Der Systemadministrator sollte sicherstellen, dass die Versionen der Binär- und Entwicklungspakete übereinstimmen.
Binärformat
Das Format ist binär und besteht aus vier Abschnitten:
- Der Lead, der die Datei als RPM-Datei identifiziert und einige veraltete Header enthält.
- Die Signatur, die verwendet werden kann, um Integrität und/oder Authentizität sicherzustellen.
- Der Header, der Metadaten enthält, einschließlich Paketname, Version, Architektur, Dateiliste usw.
- Ein Dateiarchiv (die Nutzlast ), das normalerweise im cpio- Format vorliegt , komprimiert mit gzip . Das
rpm2cpio
Tool ermöglicht das Abrufen der cpio-Datei, ohne dass das RPM-Paket installiert werden muss.- Die Linux Standard Base erfordert die Verwendung von gzip, aber Fedora 30-Pakete sind xz- komprimiert und Fedora 31-Pakete können zstd- komprimiert sein. Neuere Versionen von RPM können auch die Komprimierung bzip2 , lzip oder lzma verwenden.
- Das RPM 5.0-Format unterstützt die Verwendung von xar für die Archivierung.
SPEC-Datei
Das "Rezept" zum Erstellen eines RPM-Pakets ist eine Spezifikationsdatei. Spezifikationsdateien enden mit dem Suffix ".spec" und enthalten den Paketnamen, die Version, die RPM-Revisionsnummer, Schritte zum Erstellen, Installieren und Bereinigen eines Pakets sowie ein Änderungsprotokoll. Bei Bedarf können mehrere Pakete aus einer einzelnen RPM-Spezifikationsdatei erstellt werden. RPM-Pakete werden aus RPM-Spezifikationsdateien mit dem rpmbuild-Tool erstellt.
Spezifikationsdateien werden normalerweise in SRPM-Dateien verteilt, die die Spezifikationsdatei zusammen mit dem Quellcode enthalten.
SRPM
Ein typisches RPM ist eine vorkompilierte Software, die zur direkten Installation bereit ist. Der entsprechende Quellcode kann auch verteilt werden. Dies geschieht in einem SRPM, das auch die "SPEC"-Datei enthält, die die Software und ihren Aufbau beschreibt. Der SRPM ermöglicht es dem Benutzer auch, den Code selbst zu kompilieren und möglicherweise zu ändern.
Ein Softwarepaket kann nur plattformunabhängige Skripte enthalten. In einem solchen Fall könnte der Entwickler nur ein SRPM bereitstellen, das immer noch ein installierbares RPM ist.
NOSRC
Dies ist eine spezielle Version von SRPM. Es enthält die "SPEC"-Datei und optional Patches, aber keine Quellen (normalerweise aus Lizenzgründen).
Gabeln
Im Juni 2010 befinden sich zwei Versionen von RPM in der Entwicklung: eine wird vom Fedora-Projekt und Red Hat geleitet und die andere wird von einer separaten Gruppe geleitet, die von einem früheren Betreuer von RPM, einem ehemaligen Mitarbeiter von Red Hat, geleitet wird.
RPM.org
Die erste große Coderevision der rpm.org- Community fand im Juli 2007 statt; Version 4.8 wurde im Januar 2010 veröffentlicht, Version 4.9 im März 2011, 4.10 im Mai 2012, 4.11 im Januar 2013, 4.12 im September 2014 und 4.13 im Juli 2015.
Diese Version wird von Distributionen wie Fedora , Red Hat Enterprise Linux und Derivaten , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , OpenEmbedded , Tizen und OpenMandriva Lx (früher Mandriva ) verwendet.
Drehzahl v5
Jeff Johnson, seit 1999 RPM-Maintainer, setzte die Entwicklungsbemühungen zusammen mit Teilnehmern aus mehreren anderen Distributionen fort. RPM Version 5 wurde im Mai 2007 veröffentlicht.
Diese Version wird von Distributionen wie Wind River Linux (bis Wind River Linux 10), Rosa Linux und OpenMandriva Lx (früher Mandriva Linux, das 2011 auf rpm5 umgestellt wurde) und auch vom OpenPKG- Projekt verwendet, das Pakete für andere gängige UNIX- Plattformen.
OpenMandriva Lx wird für die Version 4.0 zurück zu rpm.org wechseln.
OpenEmbedded , der letzte große Benutzer von RPM5, wechselte aufgrund von Problemen in RPM5 zurück zu rpm.org.
Siehe auch
- Autopackage — ein "komplementäres" Paketverwaltungssystem
- Delta ISO – ein ISO-Image, das RPM Package Manager-Dateien enthält
- dpkg — Paketverwaltungssystem, das von Debian und seinen Derivaten verwendet wird
- Liste der RPM-basierten Linux-Distributionen
- pkg-config — fragt Bibliotheken ab, um Software aus ihrem Quellcode zu kompilieren
Verweise
- Schröder, Jeff (2008-01-30). "Erweiterte RPM-Abfragezeichenfolgen" . www.digitalprognose.com . Archiviert vom Original am 2011-08-09 . Abgerufen 28.03.2018 .
Externe Links
- Homepage des RPM.org-Projekts
- RPM- und DPKG-Befehlsreferenz
- Die Geschichte von RPM von Matt Frye im Red Hat Magazine Archived 2007-09-29 at the Wayback Machine
- So erstellen Sie ein RPM-Paket
- Video-Tutorials zum Erstellen und Patchen der RPMs
- RPM Notes - RPMs einfach erstellen
- Paketieren von Software mit RPM, Teil 1: Pakete erstellen und verteilen
- Lernen Sie Linux, 101: RPM- und YUM-Paketverwaltung