Зависимости в RPM. Автоматически и вручную проставляемые Requires и Provides. Общая концепция

В системе зависимостей RPM-пакетов есть 2 основные сущности:

  • Provides — предоставляемые пакетом «возможности»,
  • Requires — зависимости пакета — какие «возможности» нужны для работы этого пакета.


В этой статье рассмотрим их общую концепцию. Это актуально и для пользователей, и для сборщиков пакетов. Рассматривать будем на примере дистрибутива ROSA 12 (rosa2021.1).
Читать далее Зависимости в RPM. Автоматически и вручную проставляемые Requires и Provides. Общая концепция

Как работает генератор зависимостей и провайдов devel() RPM

Записал видео, в котором попытался показать, как работает генератор зависимостей (Requires) и Provides для RPM, автоматизирующий их проставление в RPM-пакетах. devel() зависимости и провайды в дистрибутиве ROSA были в rpm5, для rpm4 в ходе перехода на rpm4 написал работающий по похожей логике генератор на bash.

Рассматривается генератор: https://abf.io/import/devel-rpm-generators
Также показано, как запускать генератор вручную для его отладки.
Документация по генераторам: https://rpm.org/user_doc/dependency_generators
Читать далее Как работает генератор зависимостей и провайдов devel() RPM

Выступление на OSDAY-2020. Переход ROSA на RPM 4, задачи пакетной системы и ее улучшение.

Более восьми лет в дистрибутивах ROSA использовался пакетный менеджер RPM5 — форк RPM4, созданный Джеффом Джонсоном, автором RPM. Долгое время RPM5 развивался гораздо активнее своего родителя, что и обусловило его выбор для ROSA. Однако, постепенно активность по разработке RPM5 угасла, а RPM4 наоборот возродился и постепенно не только вобрал большинство интересных свойств RPM5, но и получил множество новых. В докладе рассмотрены задачи пакетной системы дистрибутива GNU/Linux, накопившиеся проблемы, пути их решения и новые улучшения, сделанные в ходе перехода на RPM 4.

PDF: osday-2020-mikhailnov.pdf
Читать далее Выступление на OSDAY-2020. Переход ROSA на RPM 4, задачи пакетной системы и ее улучшение.

Автоматический статический анализ с помощью PVS Studio при сборке RPM-пакетов

Возникла задача автоматизировать статический анализ пакетов в составе дистрибутива. Наилучший инструмент для этого — PVS Studio, потому что умеет перехватывать вызовы компилятора с помощью strace, таким образом, не требуя никаких изменений в сборочных скриптах. Сначала под наблюдением pvs-studio-analyzer запускается сборка, собирает лог, затем запускается анализатор этого лога и формируется отчет. Рассмотрим, как такое настроить, избежав внесения правок в каждый пакет.
Читать далее Автоматический статический анализ с помощью PVS Studio при сборке RPM-пакетов

Хренак, хренак и зарелизили Федору

Выкачал копии репозиториев Fedora, выкачивал так:
Читать далее Хренак, хренак и зарелизили Федору

Изощренное создание %pre скриптлета RPM-пакета из шаблона

Дано:
файл quagga-sysusers.conf («Source3: quagga-sysusers.conf» в RPM-спеке) с таким содержимым:

u @quagga_user@ - "Quagga routing suite user" /run/quagga
g @quagga_user@ -
m @quagga_user@ @quagga_user@
g @vty_group@ -
m @quagga_user@ @vty_group@

При этом хочется использовать этот конфиг systemd-sysusers в предустановочном скриптлете RPM-пакета (%pre). Но нужно шаблоны @quagga_user@ и @vty_group@ заменить на их значения.
Читать далее Изощренное создание %pre скриптлета RPM-пакета из шаблона

Как версионируются и совмещаются библиотеки из разных репозиториев

Давайте на примере btrfs-progs 4.19.1 и ffmpeg рассмотрим особенности сборки, версионирования пакетов и библиотек в дистрибутивах с продвинутой пакетной системой, то есть Deb или RPM, но не pacman или порты BSD (emerge из Gentoo имеет совсем иные принципы решения этих задач).

deb src: https://gitlab.com/nixtux-packaging/btrfs-progs/tree/master/btrfs-progs-4.19.1/debian
RPM src: https://abf.io/import/btrfs-progs
RPM binary: https://abf.io/build_lists/2957703

В приведенных примерах принцип упаковки и разделения на подпакеты идентичен.
Есть исходный пакет btrfs-progs, то есть исходные коды, расположенные по адресу https://github.com/kdave/btrfs-progs

Как можете наглядно видеть по ссылке «RPM binary: https://abf.io/build_lists/2957703» из одного исходного пакета собраны следующие бинарные, у каждого из которых стоит одинаковое значение %EVRD, то есть эпоха, версия, релиз и дистрибутив (в Альте %EVR вместо %EVRD в Росе):
— btrfs-progs
— libbtrfs0
— libbtrfsutil1
Читать далее Как версионируются и совмещаются библиотеки из разных репозиториев

Добавлено многопоточное сжатие XZ в RPM 5

В тестингах ROSA 2016.1 RPM 5, наученный упаковывать .rpm и .src.rpm, используя многопоточное сжатие xz.

Сжатие .src.rpm переведено с gzip на xz по умолчанию.
Сжатием .rpm был xz, он и остался, но стал многопоточным по умолчанию.

Пример проверки использованного в пакете сжатия:
Читать далее Добавлено многопоточное сжатие XZ в RPM 5