Po roku prac rozwojowych wydanie menedżera pakietów . Projekt RPM4 jest rozwijany przez firmę Red Hat i jest używany w takich dystrybucjach jak RHEL (w tym pochodne projekty CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen i wielu innych. Wcześniej niezależny zespół deweloperów projekt , który nie jest bezpośrednio związany z RPM4 i obecnie jest porzucony (nie aktualizowano od 2010 roku). Kod projektu jest dostępny na licencjach GPLv2 i LGPLv2.
Najbardziej zauważalne w RPM 4.16:
- Zrealizowano nowy backend do przechowywania baz danych w systemie SQLite. Ten backend w Fedora Linux 33 zamiast backendu opartego na BerkeleyDB.
- Zrealizowano nowy eksperymentalny backend do przechowywania baz danych w BDB (Oracle Berkeley DB), działający w trybie tylko do odczytu. Implementacja została napisana od podstaw i nie wykorzystuje kodu poprzedniego backendu BerkeleyDB, który został uznany za przestarzały, ale wciąż jest włączany domyślnie.
- Usunięto eksperymentalny backend baz danych oparty na LMDB.
- Ogłoszono stabilny backend baz danych oparty na magazynie NDB.
- Do makr i wyrażeń „%if” dodano wsparcie (%{expr:1==0?»yes»:»no»}) i zaproponowano wbudowaną możliwość porównania wersji (‘%[v»3:1.2-1″ > v»2.0″]’).
- Zrealizowano wsparcie dla klasyfikacji plików na podstawie typów MIME ich zawartości.
- Dodano możliwość generowania zależności przy pomocy .
- Zaproponowano nową wersję API analizy i porównania dla języków C i Python.
- Zabezpieczono równoległość wykonania brp-strip i komponentów zestawu testowego. Przeprowadzono optymalizację procesu generacji pakietów.
- W narzędziu rpmdb dodano opcję „—salvagedb” do przywracania uszkodzonej bazy danych (działa tylko z backendem NDB).
- Dodano nowe makra %arm32, %arm64 i %riscv do określenia architektury. Dodano również wbudowane makro %{macrobody:…} do uzyskania zawartości makr.
- W wyrażeniach zabroniono używania nieobudowanych w cudzysłów słów, tzn. zamiast ‘a == b’ teraz należy pisać ‘»a» == «b»‘.
- W parserze wyrażeń zrealizowano składnię „%[…]” do wykonania wyrażenia z rozszerzeniem makr (różni się od „%{expr:…}” tym, że makra są wykonywane jako pierwsze).
- W wyrażeniach dodano wsparcie dla krótkiego rozszerzenia operatorów logicznych i trójargumentowych („%[0 && 1 / 0]” jest traktowane jako 0, a nie powoduje błędu z powodu próby dzielenia przez zero).
- Dodano wsparcie dla zastosowania operatora logicznego NOT w dowolnych kontekstach (!»%?foo»).
- Zachowanie operatorów «||» i «&&» zostało dostosowane do Perl/Python/Ruby, tzn. zamiast zwracać wartość logiczną teraz zwraca ostatnią obliczoną wartość (np. «%[2 || 3]» zwróci 2).
- Dodano możliwość weryfikacji alternatywnych formatów podpisów cyfrowych i hashy.
- Dodano wsparcie dla meta-zależności (Requires(meta): somepkg), które nie wpływają na kolejność instalacji i usuwania.
- W rpmsign dodano opcję «—rpmv3» do wymuszonego użycia podpisów cyfrowych w formacie RPM3.
- Dodano opcję instalacyjną «—excludeartifacts» do pominięcia instalacji dokumentacji, przykładów plików konfiguracyjnych i innych danych towarzyszących.
- Ogłoszono ostateczne zakończenie wsparcia dla RPMv3 oraz backendów kryptograficznych beecrypt i NSS.
- Dodano wsparcie dla DSA2 (gcrypt) i EdDSA.
Źródło: opennet.ru
