Veröffentlichung des Paketmanagers RPM 4.20 und Beginn der Entwicklung von RPM 6

Nach einem Jahr der Entwicklung wurde der Paketmanager RPM 4.20.0 veröffentlicht. Das RPM4-Projekt wird von Red Hat entwickelt und findet in Distributionen wie RHEL, Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS und Tizen Anwendung. Der Quellcode des Projekts wird unter den Lizenzen GPLv2 und LGPLv2 verbreitet.

Im nĂ€chsten Jahr wird die Veröffentlichung eines umfassenden Zweigs von RPM 6 erwartet, der ein neues Archivformat verwenden wird, das es ermöglicht, Pakete mit einer GrĂ¶ĂŸe von ĂŒber 4 GB zu erstellen, was das derzeitige cpio-Format nicht zulĂ€sst (diese Grenze ist wichtig, da das SRC-Paket von Chromium nahe am Limit liegt und eine GrĂ¶ĂŸe von 3,7 GB hat). In der neuen Version ist auch geplant, die Verwendung von C++ fĂŒr die Entwicklung von RPM zu ermöglichen. Dieser bedeutende Zweig wird anlĂ€sslich des JubilĂ€ums des Projekts herausgebracht — am 27. November 2025 wird es 30 Jahre seit dem ersten Commit in RPM sein. Die Versionen RPM 5.x werden auslassen, um Überschneidungen mit dem RPM5-Projekt zu vermeiden, das nicht unmittelbar mit RPM von Red Hat verbunden ist, von einem unabhĂ€ngigen Entwicklerteam entwickelt wurde und seit 2016 nicht mehr aktualisiert wird.

Die bemerkenswertesten Verbesserungen in RPM 4.20:

  • Das neue Dienstprogramm rpm2archive wurde eingefĂŒhrt und ersetzt das Dienstprogramm rpm2cpio, wodurch der Übergang zu einem neuen Paketformat, das nicht cpio verwendet, erleichtert wird. 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 auf 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 installiert, unter BerĂŒcksichtigung des angegebenen Build-Systems, ohne dass separate Skripte zur Vorbereitung, zum Bauen und zur Installation in den Blöcken „%prep“, „%build“ und „%install“ im SPEC-File definiert werden mĂŒssen. In RPM werden die unterstĂŒtzten Build-Systeme in Form von Makrosammlungen definiert.

    Die Grundidee besteht darin, dass das deklarative Konfigurationsformat es Distributoren ermöglicht, separate Makros fĂŒr gĂ€ngige Build-Prozesse zu erstellen, um sich wiederholende Szenarien in jedem Paket nicht definieren zu mĂŒssen. Anstelle der Definition von Befehlssequenzen fĂŒr configure und make fĂŒr Programme, die Autotools verwenden, genĂŒgt es jetzt, „BuildSystem: autotools“ anzugeben, wodurch die Abschnitte „%prep“, „%build“ und „%install“ entfallen. Derzeit sind solche Makros fĂŒr Autotools und CMake verfĂŒgbar. Bei Bedarf wird den Paketbegleitern die Möglichkeit gegeben, ihre eigenen Makros zu verbinden, um verschiedene Phasen der Paketbildung zu ĂŒberschreiben.

  • Die UnterstĂŒtzung fĂŒr das HinzufĂŒgen zusĂ€tzlicher Abschnitte mit Vorbereitungs-, Build-, Installations-, Konfigurations-, Reinigungs- und PrĂŒfungsbefehlen, die die grundlegenden Abschnitte %prep, %conf, %build, %install, %check und %clean ergĂ€nzen, wurde hinzugefĂŒgt. Um ein zusĂ€tzliches Skript vor der AusfĂŒhrung des Codes aus dem grundlegenden Abschnitt zu starten, wurde die Option „-p“ vorgeschlagen, und nach dem grundlegenden Abschnitt — die Option „-a“. Solche Platzhalter können nĂŒtzlich sein, um das Verhalten im beschriebenen deklarativen Build-Modus gezielt anzupassen.
  • Es wurde erlaubt, Direktiven und Abschnitte in dynamisch generierte Teile der SPEC-Dateien aufzunehmen, die den Build-Prozess nicht beeinflussen.
  • Das Makro %builddir wurde hinzugefĂŒgt, und es wurde eine durch RPM verwaltete Möglichkeit zur Bindung eigener Build-Verzeichnisse an einzelne Pakete implementiert.
  • Ein neues Protokoll „multi-file“ wurde vorgeschlagen, das die Generierung von AbhĂ€ngigkeiten erheblich beschleunigt.
  • Der Befehl rpm wurde um die Option „—json“ erweitert, um die Ergebnisse von Abfragen im JSON-Format auszugeben.
  • Das Plugin rpm-plugin-unshare wurde hinzugefĂŒgt, das die Isolation von Skripten in den Build-Abschnitten unter Verwendung von Namespaces in Linux gewĂ€hrleistet. Zum Beispiel verbietet das Plugin den Netzwerkzugang und schrĂ€nkt den Zugriff auf das Dateisystem ein und verwendet separate private Verzeichnisse /tmp und /home, um im Falle unsicherer Arbeiten mit temporĂ€ren Dateien wĂ€hrend des Paketbaus Schutz zu bieten.
  • Eine öffentliche API zur Entwicklung von Plugins wurde vorgeschlagen, die die KompatibilitĂ€t zwischen den Versionen gewĂ€hrleisten wird. FrĂŒher war die API fĂŒr Plugins nur fĂŒr interne Verwendung gedacht und konnte von Veröffentlichung zu Veröffentlichung variieren.
  • Die Befehle rpmkeys wurden um die Optionen „—list“ und „—delete“ erweitert.
  • Im rpmsign-Tool wurde die UnterstĂŒtzung fĂŒr die Erstellung von digitalen Signaturen fĂŒr Pakete unter Verwendung von ECDSA-SchlĂŒsseln hinzugefĂŒgt.
  • Die UnterstĂŒtzung fĂŒr wiederholbare Builds wurde verbessert. Ein Makro „%build_mtime_policy“ wurde hinzugefĂŒgt, das es ermöglicht, den Inhalt der bei der Erstellung hinzugefĂŒgten Zeitstempel zu steuern (ĂŒber den Wert clamp_to_source_date_epoch kann ein fester Zeitstempel verwendet werden, wĂ€hrend mit clamp_to_buildtime die tatsĂ€chliche Erstellungszeit angegeben werden kann).
  • In den Dateien sysusers.d ist es nun erlaubt, Zeilen zur Definition von Gruppenmitgliedern hinzuzufĂŒgen.
  • Eine korrekte und distributionsunabhĂ€ngige UnterstĂŒtzung von debuginfo-Dateien wurde gewĂ€hrleistet.
  • Die Syntax der Makros %patchN (ohne Leerzeichen vor N) wurde als veraltet erklĂ€rt, deren Verwendung fĂŒhrt nun zu einem Fehler (es sollte die Syntax „%patch N“ oder „%patch -P N“ verwendet werden, wobei N die Patch-Nummer ist).
  • Der veraltete OpenPGP-Parser wurde entfernt.
  • Die AbhĂ€ngigkeitsgeneratoren fĂŒr Perl und Python ABI wurden in separate Repositories verschoben.

Quelle: opennet.ru

60GB SSD 8Gb DDR4