Выпуск пакетного менеджера RPM 4.20 и начало разработки RPM 6
После года разработки состоялся релиз пакетного менеджера RPM 4.20.0. Проект RPM4 развивается компанией Red Hat и используется в таких дистрибутивах, как RHEL, Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS и Tizen. Код проекта распространяется под лицензиями GPLv2 и LGPLv2.
В следующем году ожидается публикация значительной ветки RPM 6, в которой будет задействован новый формат архива, позволяющий в отличие от ныне используемого формата cpio создавать пакеты размером более 4 ГБ (преодоление данного ограничения важно так как SRC-пакет с Chromium близок к пределу и имеет размер 3.7 ГБ). В новой ветке также намерены разрешить использование языка C++ для разработки RPM. Новая значительная ветка будет приурочена юбилею проекта — 27 ноября 2025 году исполнится 30 лет с момента первого коммита в RPM. Версии RPM 5.x будут пропущены для исключения пересечений с проектом RPM5, который непосредственно не связан с RPM от Red Hat, развивался независимой командой разработчиков и не обновляется с 2010 года.
Наиболее заметные улучшения в RPM 4.20:
В состав включена новая утилита rpm2archive, которая пришла на смену утилите rpm2cpio и в дальнейшем упростит переход на новый формат пакетов, не использующий cpio. В отличие от rpm2cpio новая утилита преобразует RPM-файл не в архив cpio, а в архив в формате tar, сжатый при помощи gzip. Старая утилита rpm2cpio заменена символической ссылкой на rpm2archive.
Предложена декларативная система сборки, основанная на использовании новой директивы «BuildSystem», через которую может быть определена система сборки, используемая при формировании пакета. Исходный код автоматически подготавливается, компилируется и устанавливается с учётом указанной системы сборки, без необходимости отдельного определения в SPEC-файле скриптов подготовки, сборки и установки в блоках »%prep»,»%build» и »%install». В RPM поддерживаемые системы сборки определяются в форме коллекций макросов.
Основная идея в том, что декларативный формат настройки позволит разработчикам дистрибутивов создавать отдельные макросы для типовых процессов сборки, чтобы не определять повторяющиеся сценарии в каждом пакете. Например, вместо определения последовательностей запуска команд configure и make для программ, использующих Autotools, теперь достаточно указать «BuildSystem: autotools» и обойтись без секций »%prep»,»%build» и »%install».
В настоящее время подобные макросы подготовлены для Autotools и CMake. При необходимости реализации нестандартного поведения сопровождающим пакеты предоставлена возможность подключения своих макросов для переопределения разных стадий формирования пакета, включая стадии подготовки, сборки и установки.
Добавлена поддержка прикрепления дополнительных секций c командами подготовки, сборки, установки, настройки, очистки и проверки, в дополнение к базовым секциям %prep, %conf, %build, %install, %check и %clean. Для запуска скрипта перед выполнением кода из базовой секции предложена опция »-p», а после базовой секции — опция »-a». Подобные подстановки могут оказаться полезными для точечной корректировки поведения при использовании вышеописанного декларативного режима сборки.
В динамически формируемые части SPEC-файлов разрешено включение директив и секций, не влияющих на процесс сборки.
Добавлен макрос %builddir и реализована возможность привязки своих сборочных каталогов к отдельным пакетам, управляемая через RPM.
Предложен новый протокол «multi-file», значительно ускоряющий генерацию зависимостей.
В команду rpm добавлена опция »--json» для вывода результатов запросов в формате JSON.
Добавлен плагин rpm-plugin-unshare, обеспечивающий изоляцию скриптов, выполняемых в сборочных секциях, используя пространства имён в Linux. Например, плагин позволяет запретить доступ к сети и ограничить доступ к файловой системе, а также использовать отдельные приватные каталоги /tmp и /home, что блокирует совершение атак при небезопасной работе со временными файлами при сборке пакетов.
Предложен публичный API для разработки плагинов, который будет сохранять совместимость между релизами. Раньше API для плагинов был рассчитан только на внутреннее использование и мог меняться от релиза к релизу.
- В команду rpmkeys добавлены опции »--list» и »--delete».
В команду rpmsign добавлена поддержка создания цифровых подписей для пакетов, используя ключи ECDSA.
Улучшена поддержка повторяемых сборок. Добавлен макрос »%build_mtime_policy», позволяющий управлять содержимом добавляемых при сборке меток со временем (через значение clamp_to_source_date_epoch можно использовать фиксированную метку, а через clamp_to_buildtime указывать фактическое время сборки).
В файлах sysusers.d разрешено добавлять строки для определения членов группы.
Обеспечена корректная и независимая от дистрибутивов поддержка файлов debuginfo.
Объявлен устаревшим синтаксис макросов %patchN (без пробела перед N), использование которого теперь будет приводить к ошибке (следует использовать синтаксис »%patch N» или »%patch -P N», где N — номер патча).
- Удалён устаревший парсер OpenPGP.
Генераторы зависимостей для Perl и Python ABI вынесены в отдельные репозитории.
Источник: http://www.opennet.ru/opennews/art.shtml? num=62035
© OpenNet