След година разработка издание на пакетния мениджър . Проект 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
