После года разработки состоялся релиз пакетного менеджера RPM 4.16.0. Проект RPM4 развивается компанией Red Hat и используется в таких дистрибутивах, как RHEL (включая производные проекты CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen и многих других. Ранее независимой командой разработчиков развивался проект RPM5, который непосредственно не связан с 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=53811