Packaging Automation/DistroMap
DistroMap
База данных DISTROMAP трансляции пространств имен в репозиториях пакетов свободного программного обеспечения.
Введение.
Дистрибутивы различаются в политике именования пакетов, а также деления программного кода на исходные и бинарные пакеты. Различие в пространствах имен в репозиториях пакетов свободного программного обеспечения приводит к необходимости трансляции имен, а также, при необходимости, и версий, бинарных пакетов программного обеспечения в установочных и сборочных зависимостях пакетов программного обеспечения, а также трансляции имен исходных пакетов свободного программного обеспечения при сравнении пакетной базы репозитариев.
Также, при портировании сторонних пакетов в репозитрий пакетов свободного программного обеспечения Sisyphus возникает проблема трансляции групп пакетов. Это связано с тем, что для попадания пакета в репозитрий пакетов свободного программного обеспечения Sisyphus его rpm группа должна принадлежать списку групп, указанных в /usr/lib/rpm/GROUPS.
В качестве имеющихся попыток сравнения пакетной базы репозитариев можно указать таблицы соответствий версий пакетов [3], [4] (к сожалению, сравнивает версии исходных пакетов, но не содержит таблиц трансляции имен исходных пакетов.
Утилиты пакета etersoft-build-utils [5] поддерживают трансляцию установочных и сборочных зависимостей пакетов программного обеспечения для репозитрия пакетов свободного программного обеспечения Sisyphus. в пакеты других репозитриев пакетов свободного программного обеспечения для широкого круга других репозитриев с помощью всторенной базы данных соответствий. Также, предусмотрена возможность трансляция групп rpm, и есть таблица соответствий групп репозитрия пакетов свободного программного обеспечения Sisyphus и бранчей этого репозитория более ранних версий, используемая для бакпортирования пакетов из репозитрия пакетов Sisyphus в соответствующие бранчи.
Для трансляции в обратном направлении, предыдущая версия библиотеки RPM::Source::Convert содержала таблицы трансляции установочных и сборочных зависимостей пакетов программного обеспечения из репозиториев RHEL и Fedora в репозитрий пакетов свободного программного обеспечения Sisyphus с помощью всторенной базы данных соответствий. Также, Имелись таблицы трансляции rpm групп других репозиториев в rpm группы репозитрия пакетов свободного программного обеспечения Sisyphus. Общим недостатком описанных баз данных являлся незначительный объем, недостаточный для использования в общем случае, а также сложность их расширения и повторного использования, несистематический подход к их разработке.
Плагинам fedora-package-compare и fedora-сnucnu для системы агрегации оповещений о появлении новой версии программного пакета для реализации всех их возможностей необходима полноценная база данных трансляции имен исходных пакетов из репозитария пакетов свободного программного обеспечения Fedora Rawhide в репозитарий Sisyphus.
Также, при разработке программного комплекса автоматизации портирования и сопровождения программных пакетов из репозитория СПО «fedora» в нестабильной ветки репозитория СПО «Sisyphus» fedoraimport стало ясно, что для массового использования fedoraimport необходимо иметь как можно более полную база данных трансляции имен бинарных пакетов, которая бы использовалась для трансляции сборочных и установочных зависимостей пакетов. Также, полноценная база данных трансляции имен исходных пакетов из репозитария пакетов свободного программного обеспечения Fedora Rawhide в репозитарий Sisyphus позволяет явно выделить множество исходных пакетов репозитария пакетов свободного программного обеспечения Fedora Rawhide, которые отсутствуют в репозитарии пакетов свободного программного обеспечения Sisyphus, позволяя, таким образом, автоматизировать задачу подбора начальных данных для системы fedoraimport.
Обе эти базы данных достаточно сильно связаны между собой. В частности, имея базу данных трансляции имен исходных пакетов, из нее можно сгенерировать большую часть базы данных трансляции сборочных и установочных зависимостей. К сожалению, из-за различий в разбиении исходных пакетов свободного программного обеспечения на бинарные пакеты и различий в зависимостях между бинарными пакетами корректировка вручную необходима, однако эти зависимости связывают обе базы данных в единое целое.
Эти причины побудили вынести как отдельную подсистему базы данных трансляции пространств имен в репозиториях пакетов свободного программного обеспечения. из систем, отвечающих за мониторинг upstream-репозитория в случае, когда upstream-репозиторий является сторонним репозиторием пакетов свободного программного обеспечения и выделить ее в отдельный проект, получивший название DISTROMAP.
Структура проекта DISTROMAP.
DISTROMAP предназначен для трансляции пространств имен в репозиториях пакетов свободного программного обеспечения. DISTROMAP включает в себя собственно базы данных, утилиты генерации и сопровождения баз данных, shell интерфейс и интерфейс в виде модуля perl. Структура баз данных и интерфейс спроектированы таким образом, чтобы поддерживать различные репозитории, а также различные релизы (дистрибутивы, ветви) этих репозиториев. В качестве первой цели проекта выбраны БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus.
Shell интерфейс представляет собой фильтр конвейера оболочки, в зависимости от опций осуществляющий трансляцию имен исходных либо бинарных пакетов, либо трансляцию сборочных и установочных зависимостей (При трансляции имен пакетов используется трансляция один-к-одному, в то время как при трансляции сборочных и установочных зависимостей используется трансляция один-ко-многим. Это связанно с тем, что при поиске пакета, соответствующего данному, целью является конкретный пакет, например, для сравнения версий. В то же время для удовлетворения сборочных или установочных зависимостей может понадобиться указать сразу несколько пакетов программного обеспечения. Интерфейсный модуль perl реализует стандартный интерфейс хеш-таблиц perl. Он конфигурируется через указание исходного и целевого репозитариев пакетов свободного программного обеспечения а также их подвидов (релизов, дистрибутивов, бранчей). По умолчанию, это (Fedora, Rawhide) в качестве источника и (ALT Linux, Sisyphus) в качестве репозитория назначения. Также указывается режим соответствия трансляция один-к-одному или трансляция один-ко-многим.
Утилиты сопровождения позволяют находить потенциальные соответствия по заданным алгоритмам и заносить их в БД после подтверждения оператором, находить устаревшие соответствия и перемещать их в соответствия релизов и т. д.
Для удобства расширения и сопровождения база данных сделана модульной.