RPM-Paketmanager - RPM Package Manager

RPM-Paketmanager (RPM)
RPM Logo.svg
Originalautor(en) Erik Troan, Marc Ewing , Red Hat
Entwickler Community & Red Hat
Erstveröffentlichung 1997 ; Vor 24 Jahren ( 1997 )
Stabile Version
4.16.1.3 / 22. März 2021 ; vor 4 Monaten ( 2021-03-22 )
Vorschauversion
4.17.0 Alpha / 26. April 2021 ; vor 3 Monaten ( 2021-04-26 )
Repository Bearbeite dies bei Wikidata
Geschrieben in C , Perl
Betriebssystem Linux , Unix-ähnlich
Typ Paketverwaltungssystem
Lizenz GPL
Webseite U/min .org

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 pmErfahrungen.

pmwurde 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. pmbehält das " Pristine Sources + Patches"-Paradigma von bei pms, während es Funktionen hinzufügt und willkürliche Einschränkungen in der Implementierung beseitigt. pmbietet 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:

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 --rebuilddbBefehl.

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.rpmist beispielsweise das <name>is libgnomeuimm, das <version>is 2.0, das <release>is 2.0.0_3und das <architecture>is i386. Das zugehörige Quellpaket würde benanntlibgnomeuimm-2.0-2.0.0_3.src.rpm

RPMs mit der noarch.rpmErweiterung 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 rpm2cpioTool 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

Verweise

Externe Links