Альтернатива «горбатому» RPM — двугорбый RPM (Глеб Фотенгауэр-Малиновский, OSSDEVCONF-2016)
Материал из 0x1.tv
Содержание
Аннотация
- Докладчик
- Глеб Фотенгауэр-Малиновский
Используемый в ALT пакетный менеджер RPM является форком RPM версии 4.0.4, выпущенной в феврале 2002 года. За эти годы оба проекта сильно изменились. В докладе будет рассказано о устройстве RPM и об успехах достигнутых за последние полгода в переносе нужного нам функционала на современную версию RPM — 4.13.
Видео
Слайды
Расширенные тезисы
История RPM
В 1995 Эрик Троан и Марк Эвинг начали разработку RPM. Это была уже третья попытка (после RPP и PM) компании Red Hat сделать пакетный менеджер. С 1998 года к проекту подключился Джефф Джонсон и почти сразу стал основным разработчиком. В результате ухода Джеффа Джонсона из Red Hat в 2005 году появилось два независимых проекта разработки RPM — RPM5.org, который продолжает разрабатывать Джефф Джонсон, и RPM.org, который в основном разрабатывают сотрудники Red Hat.
Устройство RPM
RPM можно разделить на две части: установщик пакетов rpm и сборщик пакетов rpmbuild, которые сосуществуют в одном проекте больше по историческим причинам, чем по техническим. Установщик пакетов помимо собственно установки, удаления и обновления пакетов, обслуживания системной базы данных установленных пакетов, также включает в себя библиотеку librpm, предоставляющую API для работы с базой данных и установки пакетов.
Ситуация с RPM в ALT
С 2002 года в RPM было добавлено множество фич, и им было собрано в Сизиф больше 84,5 тысячи бинарных пакетов из 17,5 тысяч исходных пакетов. Главным поводом для обновления RPM является API librpm. Тот API, что есть у нас уже много лет, не устраивает современные проекты. Обновление RPM — дело рискованное, потому что после обновления все бинарные пакеты должны продолжать устанавливаться, а все исходные — продолжать собираться в такие же бинарные пакеты.
Было принято решение разделить обновление RPM на две стадии: обновление установщика (включая библиотеку и её API) и обновление сборщика rpmbuild.
Основные отличия RPM:
- Зависимости на символы в библиотеках;
- Учёт времени сборки пакета при сравнении версий;
- Отсутствие epoch не считается эквивалентным epoch=0;
- Другое устройство файловых триггеров;
Результаты
На данный момент первую стадию можно считать завершённой — разделённые установщик rpm-4.13 и сборщик rpm-build-4.0.4 готовятся к отправке в Сизиф. Для этого обновления потребовалось исправить пакеты, использующие API librpm, в первую очередь — apt.
Примечания и отзывы
Plays:90 Comments:0

