Nach einem Jahr der Entwicklung wurde der Paketmanager RPM 4.20.0 veröffentlicht. Das RPM4-Projekt wird von Red Hat betrieben und findet Anwendung in Distributionen wie RHEL, Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS und Tizen. Der Code des Projekts wird unter den Lizenzen GPLv2 und LGPLv2 verteilt.
Im nĂ€chsten Jahr wird eine bedeutende Version von RPM 6 veröffentlicht, die ein neues Archivformat einfĂŒhrt, das es ermöglicht, Pakete mit mehr als 4 GB zu erstellen, anders als das derzeit verwendete cpio-Format (dies ist wichtig, da das SRC-Paket mit Chromium nahe an dieser Grenze liegt und 3,7 GB groĂ ist). In dieser neuen Version wird auch die Nutzung der Programmiersprache C++ fĂŒr die Entwicklung von RPM erlaubt. Diese wichtige Version wird anlĂ€sslich des JubilĂ€ums des Projekts veröffentlicht â am 27. November 2025 jĂ€hrt sich der erste Commit in RPM zum 30. Mal. Die Versionen 5.x von RPM werden ĂŒbersprungen, um Ăberschneidungen mit dem Projekt RPM5 zu vermeiden, das nicht mit RPM von Red Hat verbunden ist, von einem unabhĂ€ngigen Entwicklerteam betrieben wurde und seit 2016 nicht mehr aktualisiert wird.
Die auffÀlligsten Verbesserungen in RPM 4.20:
- In das Paket wurde ein neues Dienstprogramm rpm2archive eingefĂŒhrt, das das alte Dienstprogramm rpm2cpio ersetzt und die Umstellung auf das neue Paketformat, das ohne cpio auskommt, erleichtert. Im Gegensatz zu rpm2cpio wandelt das neue Dienstprogramm die RPM-Datei nicht in ein cpio-Archiv, sondern in ein tar-Archiv um, das mit gzip komprimiert ist. Das alte Dienstprogramm rpm2cpio wird durch einen symbolischen Link zu rpm2archive ersetzt.
- Ein deklaratives Build-System wurde vorgeschlagen, das auf der Verwendung der neuen Direktive âBuildSystemâ basiert, ĂŒber die das beim Erstellen des Pakets verwendete Build-System definiert werden kann. Der Quellcode wird automatisch vorbereitet, kompiliert und unter BerĂŒcksichtigung des angegebenen Build-Systems installiert, ohne dass im SPEC-File separate Skripte fĂŒr Vorbereitung, Build und Installation in den Blöcken â%prepâ, â%buildâ und â%installâ definiert werden mĂŒssen. In RPM werden die unterstĂŒtzten Build-Systeme in Form von Makrosammlungen definiert.
Die grundlegende Idee besteht darin, dass das deklarative Konfigurationsformat es Entwicklern von Distributionen ermöglicht, separate Makros fĂŒr typische Build-Prozesse zu erstellen, sodass sich wiederholende Szenarien nicht in jedem Paket definieren lassen. Anstatt zum Beispiel die Befehlsfolgen fĂŒr die Konfiguration und den Build von Programmen, die Autotools verwenden, zu definieren, genĂŒgt es jetzt, "BuildSystem: autotools" anzugeben und die Abschnitte "%prep", "%build" und "%install" wegzulassen. Derzeit sind solche Makros fĂŒr Autotools und CMake vorbereitet. Wenn ein benutzerdefiniertes Verhalten benötigt wird, haben die Paketbetreuer die Möglichkeit, ihre Makros zum Ăberschreiben verschiedener Phasen der Paketbildung einzubinden.
- Die UnterstĂŒtzung fĂŒr das AnhĂ€ngen zusĂ€tzlicher Abschnitte mit den Befehlen Vorbereitung, Erstellung, Installation, Konfiguration, Reinigung und PrĂŒfung wurde hinzugefĂŒgt. Diese ergĂ€nzen die Basisabschnitte %prep, %conf, %build, %install, %check und %clean. Um ein zusĂ€tzliches Skript vor der AusfĂŒhrung des Codes aus dem Basisabschnitt auszufĂŒhren, wurde die Option â-pâ angeboten, und nach dem Basisabschnitt die Option â-aâ. Solche Platzhalter können nĂŒtzlich sein, um das Verhalten im oben beschriebenen deklarativen Build-Modus punktuell anzupassen.
- Es ist nun erlaubt, in dynamisch generierte Teile von SPEC-Dateien Direktiven und Abschnitte aufzunehmen, die den Build-Prozess nicht beeinflussen.
- Ein neuer Makro %builddir wurde hinzugefĂŒgt, und es wurde eine ĂŒber RPM steuerbare Möglichkeit implementiert, eigene Build-Verzeichnisse an einzelnen Paketen zu binden.
- Ein neues Protokoll âmulti-fileâ wurde vorgeschlagen, das die Generierung von AbhĂ€ngigkeiten erheblich beschleunigt.
- Der rpm-Befehl wurde um die Option ââjsonâ erweitert, um die Ergebnisse von Abfragen im JSON-Format auszugeben.
- Das rpm-plugin-unshare wurde hinzugefĂŒgt, um die Isolation von Skripten zu gewĂ€hrleisten, die in den Build-Sektionen ausgefĂŒhrt werden, indem NamensrĂ€ume in Linux verwendet werden. Beispielsweise ermöglicht das Plugin, den Zugriff auf das Netzwerk zu verweigern und den Zugriff auf das Dateisystem einzuschrĂ€nken sowie separate private Verzeichnisse /tmp und /home zu nutzen, um im Falle unsicherer VorgĂ€nge mit temporĂ€ren Dateien wĂ€hrend des Paketbaus Schutz zu bieten.
- Ein öffentliches API fĂŒr die Plugin-Entwicklung wurde vorgeschlagen, das die KompatibilitĂ€t zwischen den Releases gewĂ€hrleistet. Zuvor war das API fĂŒr Plugins nur fĂŒr die interne Nutzung gedacht und konnte von Release zu Release variieren.
- Die Optionen ââlistâ und ââdeleteâ wurden in das rpmkeys-Kommando hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr die Erstellung digitaler Signaturen fĂŒr Pakete unter Verwendung von ECDSA-SchlĂŒsseln wurde in das rpmsign-Kommando integriert.
- Die UnterstĂŒtzung fĂŒr reproduzierbare Builds wurde verbessert. Ein neuer Makro â%build_mtime_policyâ wurde hinzugefĂŒgt, um den Inhalt der bei der Erstellung hinzugefĂŒgten Zeitstempel zu verwalten (durch den Wert clamp_to_source_date_epoch kann ein fester Zeitstempel verwendet werden, wĂ€hrend mit clamp_to_buildtime die tatsĂ€chliche Bauzeit angegeben werden kann).
- In den sysusers.d-Dateien ist es jetzt erlaubt, Zeilen hinzuzufĂŒgen, um Mitglieder von Gruppen zu definieren.
- Die korrekte und distributionsunabhĂ€ngige UnterstĂŒtzung von debuginfo-Dateien ist gewĂ€hrleistet.
- Die Verwendung der Makrosyntax %patchN (ohne Leerzeichen vor N) wurde als veraltet erklĂ€rt und fĂŒhrt jetzt zu einem Fehler; verwenden Sie stattdessen die Syntax â%patch Nâ oder â%patch -P Nâ, wobei N die Patchnummer ist.
- Der veraltete OpenPGP-Parser wurde entfernt.
- Die AbhĂ€ngigkeitserzeuger fĂŒr Perl und Python ABI wurden in separate Repositories ausgelagert.
Quelle: opennet.ru
