След година разработка издания на пакетния мениджър . Проект RPM4 се развива от компанията Red Hat и се използва в дистрибуции като RHEL (включително производни проекти CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen и много други. Преди е бил независим екип от разработчици проект , който не е пряко свързан с RPM4 и в момента е изоставен (не е обновяван от 2010 година). Кодът на проекта е под лицензите GPLv2 и LGPLv2.
Най-забележителните в RPM 4.16:
- Реализиран е нов бекенд за съхранение на БД в СУБД SQLite. Този бекенд в Fedora Linux 33 вместо бекенда, базиран на BerkeleyDB.
- Реализиран е нов експериментален бекенд за съхранение на БД в BDB (Oracle Berkeley DB), който работи в режим само за четене. Реализацията е написана от нулата и не използва кода на предишния бекенд BerkeleyDB, който е обявен за остарял, но все пак е включен по подразбиране.
- Премахнат е експерименталният бекенд на БД, базиран на LMDB.
- Обявен е стабилен бекенд на БД, базиран на хранилището NDB.
- В макросите и изразите «%if» е добавена поддръжка на (%{expr:1==0?»yes»:»no»}) и е предложена вградена възможност за сравнение на версии (‘%[v»3:1.2-1″ > v»2.0″]’).
- Реализирана е поддръжка на класификация на файлове на базата на MIME-типовете на тяхното съдържание.
- Добавена е възможност за генериране на зависимости с помощта на .
- Предложена е нова версия на API за парсинг и сравнение за езиците C и Python.
- Обезпечено е разпаралеляване на изпълнението на brp-strip и компонентите на тестовия набор. Проведена е оптимизация на разпаралеляването на процеса на генериране на пакети.
- В утилита rpmdb опцията «—salvagedb» за възстановяване на повредена БД (работи само с бекенда NDB).
- Добавени са нови макроси %arm32, %arm64 и %riscv за определяне на архитектурата. Също така е добавен вграден макрос %{macrobody:…} за получаване на съдържанието на макросите.
- В изразите е забранено използването на необособени в кавички думи, т.е. вместо ‘a == b’ сега трябва да пишете ‘»a» == «b»‘.
- В парсера на изразите е реализиран синтаксис «%[…]» за изпълнение на израза с разкриване на макросите (от «%{expr:…}» се различава по това, че макросите се изпълняват първо).
- В изразите е добавена поддръжка на кратко разкриване на логически и тернарни оператори («%[0 && 1 \/ 0]» се разглежда като 0, а не води до грешка поради опит за деление на нула).
- Добавена поддръжка за употреба на логическия оператор NOT в произволни контексти (!»%?foo»).
- Поведението на операторите «||» и «&&» е приведено в съответствие с Perl/Python/Ruby, т.е. вместо да връща булево значение, сега предоставя последната изчислена стойност (например, «%[2 || 3]» ще върне 2).
- Добавена е възможността за верификация на алтернативни формати на цифрови подписи и хешове.
- Добавена е поддръжка за мета-зависимости (Requires(meta): somepkg), които не влияят на реда на инсталация и деинсталация.
- В rpmsign е добавена опция «—rpmv3» за задължително използване на цифрови подписи във формат RPM3.
- Добавена е инсталационна опция «—excludeartifacts» за пропускане на инсталацията на документация, примери за конфигурационни файлове и други свързани данни.
- Подкрепата за RPMv3 и криптобекендите beecrypt и NSS е обявена за остаряла.
- Добавена е поддръжка за DSA2 (gcrypt) и EdDSA.
Източник: opennet.ru
