Packaging Automation/DistroMap

Материал из ALT Linux Wiki


DistroMap

База данных DISTROMAP предназначена для трансляции пространств имен между дистрибутивами. DISTROMAP включает в себя собственно базы данных, утилиты генерации и сопровождения баз данных, shell интерфейс и perl интерфейс. Для удобства расширения и сопровождения база данных сделана модульной.

Введение.

Дистрибутивы различаются в политике именования пакетов, а также деления программного кода на исходные и бинарные пакеты. Различие в пространствах имен в репозиториях пакетов свободного программного обеспечения приводит к необходимости трансляции имен, а также, при необходимости, и версий, бинарных пакетов программного обеспечения в установочных и сборочных зависимостях пакетов программного обеспечения, а также трансляции имен исходных пакетов свободного программного обеспечения при сравнении пакетной базы репозитариев.

Также, при портировании сторонних пакетов в репозитрий пакетов свободного программного обеспечения 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) в качестве репозитория назначения. Также указывается режим соответствия трансляция один-к-одному или трансляция один-ко-многим.

Утилиты сопровождения позволяют находить потенциальные соответствия по заданным алгоритмам и заносить их в БД после подтверждения оператором, находить устаревшие соответствия и перемещать их в соответствия релизов и т. д.

Для удобства расширения и сопровождения база данных сделана модульной.

классы данных

Основные:

TODO:

Дополнительно:

В структуре описания репозитария:

  • Допустимые группы rpm
  • файлы конфигурации pkg-config
  • соответствие бинарных и исходных пакетов

В структуре описания трансляции репозитариев:

  • поддержка несравнимых по версиям соответствий пакетов
  • поддержка списка избыточных пакетов, подлежащих удалению из сборочных либо установочных зависимостей
  • поддержка списка избыточных пакетов, для которых из сборочных либо установочных зависимостей должны быть удалены версии (несравнимые по версиям пакеты включаются в этот список автоматически).
  • точные соответствия групп rpm
  • нестрогие соответствия групп rpm.

Продолжена работа по наполнению БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus. Текущая БД трансляции содержит 1280 записей для случаев, когда имена пакетов или других сущностей различны. БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus оформлена в виде программного пакета для нестабильной ветви «Sisyphus» репозитория СПО. Дополнительно к уже имеющейся БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus начата работа по наполнению БД трансляции пространств имен из нестабильной ветви «Sisyphus» в стабильную ветвь t6 репозитария пакетов свободного программного обеспечения. БД состояния репозитория теперь обновляются ежедневно и доступны online: БД текущего состояния нестабильной ветви «Sisyphus» репозитория СПО доступно с сайта repocop.altlinux.ru, БД текущего состояния стабильной ветви «t6» репозитория СПО доступно с сайта autoports.altlinux.ru. Интерфейсный модуль perl переписан для использования новых классов данных, добавленых для БД состояния репозитория и БД трансляции пространства имен репозитариев.

Ссылки

5. http://www.altlinux.org/Etersoft-build-utils