Nach fast zwei Jahren Entwicklung Release des Paketmanagers . Das RPM4-Projekt wird von Red Hat entwickelt und findet Verwendung in Distributionen wie RHEL (einschließlich abgeleiteter Projekte wie CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen und vielen anderen. Zuvor wurde es von einem unabhängigen Entwicklerteam Projekt , das nicht direkt mit RPM4 verbunden ist und derzeit eingestellt wurde (seit 2010 nicht mehr aktualisiert).
Die auffälligsten Änderungen in RPM 4.15:
- Experimentelle Unterstützung für unprivilegierte Builds in einer chroot-Umgebung hinzugefügt;
- Unterstützung für die Parallelisierung der Paketversion auf Mehrkernsystemen. Die Anzahl der Threads wird über das Makro „%_smp_build_ncpus“ und die Variable $RPM_BUILD_NCPUS festgelegt. Ein Makro „%getncpus“ wurde vorgeschlagen, um die Anzahl der CPUs zu ermitteln;
- In den Spec-Dateien wurde die Unterstützung für den bedingten Operator „%elif“ (else if) sowie für die Varianten „%elifos“ und „%elifarch“ zur Bindung an Distribution und Architektur eingeführt;
- neue Abschnitte „%patchlist“ und „%sourcelist“, die verwendet werden können, um Patches und Quelltexte einfach durch Auflistung der Namen ohne Angabe von Eintragsnummern hinzuzufügen (zum Beispiel kann anstelle von
„Patch0: popt-1.16-pkgconfig.patch“ im Abschnitt %patchlist einfach „popt-1.16-pkgconfig.patch“ angegeben werden); - In rpmbuild wurde die Unterstützung für dynamische Abhängigkeitsauflösung mit deren Einbeziehung in src.rpm hinzugefügt. In der Spec-Datei wurde die Unterstützung für den Abschnitt „%generate_buildrequires“ hinzugefügt, dessen Inhalt als Liste von Abhängigkeiten (BuildRequires) behandelt wird, die überprüft werden müssen (wenn eine Abhängigkeit fehlt, wird ein Fehler ausgegeben).
- Der Operator „^“ zur Überprüfung von Versionen, die nach einem bestimmten Datum älter sind, führt die entgegengesetzte Aktion zum Operator „~“ aus. Beispielsweise
deckt „1.1^20160101“ die Version 1.1 und alle nach dem 1. Januar 2016 hinzugefügten Patches ab; - Die Option „—scm“ zum Aktivieren des Modus „%autosetup SCM“ wurde hinzugefügt;
- Ein eingebautes Makro „%{expr:…}“ zur Berechnung beliebiger Ausdrücke wurde hinzugefügt (vor einigen Tagen wurde auch das Format „%[ expr ]“ eingeführt);
- Die standardmäßige Verwendung der UTF-8-Codierung für Zeichenfolgendaten in Headern wurde sichergestellt;
- Globale Makros %build_cflags, %build_cxxflags, %build_fflags und %build_ldflags mit Flags für Compiler und Linker wurden hinzugefügt;
- Das Makro „%dnl“ (Discard to Next Line) zur Einfügung von Kommentaren wurde hinzugefügt;
- In den Bindungen für Python 3 wurde die Rückgabe von Strings als escaped UTF-8-Sequenzen anstelle von Byte-Daten sichergestellt;
- Eine fiktive Backend-Datenbank wurde hinzugefügt, um die Unterstützung für Systeme ohne rpmdb (z. B. Debian) zu verbessern;
- Die Architektur-Erkennung für ARM wurde verbessert und die Unterstützung für armv8 hinzugefügt;
- Nahtlose Unterstützung für Lua 5.2-5.3 wurde bereitgestellt, ohne dass Compat-Definitionen im Code erforderlich sind.
Quelle: opennet.ru
