Издаване на пакетния мениджър RPM 4.16

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster