Packaging Automation/DistroMap: различия между версиями
(не показано 8 промежуточных версий 2 участников) | |||
Строка 6: | Строка 6: | ||
== DistroMap == | == DistroMap == | ||
База данных DISTROMAP трансляции пространств имен в | База данных DISTROMAP предназначена для трансляции пространств имен между дистрибутивами. DISTROMAP включает в себя собственно базы данных, утилиты генерации и сопровождения баз данных, shell интерфейс и perl интерфейс. Для удобства расширения и сопровождения база данных сделана модульной. | ||
=== Введение. === | === Введение. === | ||
Дистрибутивы различаются в политике именования пакетов, а также деления программного кода на исходные и бинарные пакеты. Различие в пространствах имен | Дистрибутивы различаются в политике именования пакетов, а также деления программного кода на исходные и бинарные пакеты. Различие в пространствах имен приводит к необходимости трансляции имен, а также, при необходимости, и версий, бинарных пакетов в установочных и сборочных зависимостях пакетов, а также трансляции имен исходных пакетов при сравнении пакетной базы репозиториев. | ||
Также, при портировании сторонних пакетов в Sisyphus возникает проблема трансляции групп пакетов. Это связано с тем, что для попадания пакета в Sisyphus его rpm группа должна принадлежать списку групп, указанных в /usr/lib/rpm/GROUPS. | |||
Утилиты пакета etersoft-build-utils | Утилиты пакета [[etersoft-build-utils]] поддерживают трансляцию установочных и сборочных зависимостей пакетов Sisyphus. в пакеты широкого круга других дистрибутивов с помощью встроенной базы данных соответствий. Также, предусмотрена возможность трансляция групп rpm, и есть таблица соответствий групп Sisyphus и групп бранчей, используемая для бакпортирования пакетов из Sisyphus в соответствующие бранчи. | ||
Для трансляции в обратном направлении, предыдущая версия библиотеки RPM::Source::Convert содержала таблицы трансляции установочных и сборочных зависимостей пакетов | Для трансляции в обратном направлении, предыдущая версия библиотеки RPM::Source::Convert содержала таблицы трансляции установочных и сборочных зависимостей пакетов из репозиториев RHEL и Fedora в репозиторий Sisyphus с помощью встроенной базы данных соответствий. Также, имелись таблицы трансляции rpm групп других репозиториев в rpm группы репозитория пакетов свободного программного обеспечения Sisyphus. | ||
Общим недостатком описанных баз данных являлся незначительный объем, недостаточный для использования в общем случае, а также сложность их расширения и повторного использования, несистематический подход к их разработке. | Общим недостатком описанных баз данных являлся незначительный объем, недостаточный для использования в общем случае, а также сложность их расширения и повторного использования, несистематический подход к их разработке. | ||
Плагинам fedora-package-compare и fedora-сnucnu для системы агрегации оповещений о появлении новой версии программного пакета для реализации всех их возможностей необходима полноценная база данных трансляции имен исходных пакетов из | Плагинам fedora-package-compare и fedora-сnucnu для системы агрегации оповещений о появлении новой версии программного пакета для реализации всех их возможностей необходима полноценная база данных трансляции имен исходных пакетов из Fedora Rawhide в репозитарий Sisyphus. | ||
Также, при разработке программного комплекса автоматизации портирования и сопровождения программных пакетов из | Также, при разработке программного комплекса автоматизации портирования и сопровождения программных пакетов из Fedora Rawhide в Sisyphus, fedoraimport, стало ясно, что для массового использования fedoraimport необходимо иметь как можно более полную база данных трансляции имен бинарных пакетов, которая бы использовалась для трансляции сборочных и установочных зависимостей пакетов. Также, полноценная база данных трансляции имен исходных пакетов из Fedora Rawhide в Sisyphus позволяет явно выделить множество исходных пакетов репозитория Fedora Rawhide, которые отсутствуют в репозитории Sisyphus, позволяя, таким образом, автоматизировать задачу подбора начальных данных для системы fedoraimport. | ||
Обе эти базы данных достаточно сильно связаны между собой. В частности, имея базу данных трансляции имен исходных пакетов, из нее можно сгенерировать большую часть базы данных трансляции сборочных и установочных зависимостей. К сожалению, из-за различий в разбиении исходных пакетов | Обе эти базы данных достаточно сильно связаны между собой. В частности, имея базу данных трансляции имен исходных пакетов, из нее можно сгенерировать большую часть базы данных трансляции сборочных и установочных зависимостей. К сожалению, из-за различий в разбиении исходных пакетов на бинарные пакеты и различий в зависимостях между бинарными пакетами корректировка вручную необходима, однако эти зависимости связывают обе базы данных в единое целое. | ||
Эти причины побудили вынести как отдельную подсистему базы данных трансляции пространств имен в репозиториях пакетов | Эти причины побудили вынести как отдельную подсистему базы данных трансляции пространств имен в репозиториях пакетов из систем, отвечающих за мониторинг upstream-репозитория в случае, когда upstream-репозиторий является сторонним репозиторием пакетов свободного программного обеспечения, и выделить ее в отдельный проект, получивший название DISTROMAP. | ||
=== Структура проекта DISTROMAP. === | === Структура проекта DISTROMAP. === | ||
Строка 36: | Строка 35: | ||
Для удобства расширения и сопровождения база данных сделана модульной. | Для удобства расширения и сопровождения база данных сделана модульной. | ||
=== | |||
== внутренние служебные утилиты DistroMap == | |||
=== Фильтры === | |||
Фильтры distromap работают с табличными текстовыми файлами, где колонки разделяются последовательностью пробельных символов (\s+). | |||
В каждой строке (кроме пустых и #-комментариев) в указанной колонке значение заменяется на значение из базы distromap. | |||
По умолчанию замена производится в первой колонке. | |||
Если замена не найдена, содержимое не меняется. | |||
Примеры: | |||
* замена имен src.rpm fedora -> altlinux (надо установить distromap-fedora-rawhide-altlinux-sisyphus) | |||
echo PyYAML | distromap-filter-translate-source-names --originrepo fedora --destrepo altlinux | |||
python-module-yaml | |||
* обратная замена имен src.rpm fedora <- altlinux. | |||
Если делать как в прошлом примере, то надо иметь обратную базу distromap-altlinux-sisyphus-fedora-rawhide. | |||
Но поскольку такой сейчас нет, можно исхитриться и с имеющейся distromap-fedora-rawhide-altlinux-sisyphus, | |||
вызвав другую утилиту: | |||
echo python-module-yaml | distromap-filter-reverse-translate-source-names --originrepo fedora --destrepo altlinux | |||
PyYAML | |||
* замена имен бинарных rpm fedora -> altlinux (надо установить distromap-fedora-rawhide-altlinux-sisyphus) | |||
echo argtable-devel | distromap-filter-translate-binary-names --originrepo fedora --destrepo altlinux | |||
libargtable2-devel | |||
* CPAN, PyPI. distromap-filter-translate-*-names с ними не работают, для них есть отдельные утилиты. | |||
distromap-filter-translate-altlinux2cpan | |||
distromap-filter-translate-altlinux2pypi | |||
distromap-filter-translate-cpan2altlinux | |||
distromap-filter-translate-pypi2altlinux | |||
Пример: | |||
echo Arp | distromap-filter-translate-cpan2altlinux | |||
perl-Arp | |||
== классы данных == | |||
Основные: | |||
TODO: | |||
Дополнительно: | |||
В структуре описания репозитария: | |||
* Допустимые группы rpm | |||
* файлы конфигурации pkg-config | |||
* соответствие бинарных и исходных пакетов | |||
В структуре описания трансляции репозитариев: | |||
* поддержка несравнимых по версиям соответствий пакетов | |||
* поддержка списка избыточных пакетов, подлежащих удалению из сборочных либо установочных зависимостей | |||
* поддержка списка избыточных пакетов, для которых из сборочных либо установочных зависимостей должны быть удалены версии (несравнимые по версиям пакеты включаются в этот список автоматически). | |||
* точные соответствия групп rpm | |||
* нестрогие соответствия групп rpm. | |||
Продолжена работа по наполнению БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus. Текущая БД трансляции содержит 1280 записей для случаев, когда имена пакетов или других сущностей различны. БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus оформлена в виде программного пакета для нестабильной ветви «Sisyphus» репозитория СПО. | |||
Дополнительно к уже имеющейся БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus начата работа по наполнению БД трансляции пространств имен из нестабильной ветви «Sisyphus» в стабильную ветвь t6 репозитария пакетов свободного программного обеспечения. | |||
БД состояния репозитория теперь обновляются ежедневно и доступны online: БД текущего состояния нестабильной ветви «Sisyphus» репозитория СПО доступно с сайта http://repocop.altlinux.ru, БД текущего состояния стабильной ветви «t6» репозитория СПО доступно с сайта http://autoports.altlinux.ru. | |||
Интерфейсный модуль perl переписан для использования новых классов данных, добавленых для БД состояния репозитория и БД трансляции пространства имен репозитариев. | |||
{| class="wide" | |||
| Разработано при поддержке [http://www.fasie.ru/ Фонда содействия развитию МП НТС] в рамках НИОКР 01201066526 | |||
| [[Изображение:Logo_FASIE_preview.jpg|200px|rigft]] | |||
|} |
Текущая версия от 16:15, 24 декабря 2018
DistroMap
База данных DISTROMAP предназначена для трансляции пространств имен между дистрибутивами. DISTROMAP включает в себя собственно базы данных, утилиты генерации и сопровождения баз данных, shell интерфейс и perl интерфейс. Для удобства расширения и сопровождения база данных сделана модульной.
Введение.
Дистрибутивы различаются в политике именования пакетов, а также деления программного кода на исходные и бинарные пакеты. Различие в пространствах имен приводит к необходимости трансляции имен, а также, при необходимости, и версий, бинарных пакетов в установочных и сборочных зависимостях пакетов, а также трансляции имен исходных пакетов при сравнении пакетной базы репозиториев.
Также, при портировании сторонних пакетов в Sisyphus возникает проблема трансляции групп пакетов. Это связано с тем, что для попадания пакета в Sisyphus его rpm группа должна принадлежать списку групп, указанных в /usr/lib/rpm/GROUPS.
Утилиты пакета etersoft-build-utils поддерживают трансляцию установочных и сборочных зависимостей пакетов Sisyphus. в пакеты широкого круга других дистрибутивов с помощью встроенной базы данных соответствий. Также, предусмотрена возможность трансляция групп rpm, и есть таблица соответствий групп Sisyphus и групп бранчей, используемая для бакпортирования пакетов из Sisyphus в соответствующие бранчи.
Для трансляции в обратном направлении, предыдущая версия библиотеки RPM::Source::Convert содержала таблицы трансляции установочных и сборочных зависимостей пакетов из репозиториев RHEL и Fedora в репозиторий Sisyphus с помощью встроенной базы данных соответствий. Также, имелись таблицы трансляции rpm групп других репозиториев в rpm группы репозитория пакетов свободного программного обеспечения Sisyphus. Общим недостатком описанных баз данных являлся незначительный объем, недостаточный для использования в общем случае, а также сложность их расширения и повторного использования, несистематический подход к их разработке.
Плагинам fedora-package-compare и fedora-сnucnu для системы агрегации оповещений о появлении новой версии программного пакета для реализации всех их возможностей необходима полноценная база данных трансляции имен исходных пакетов из Fedora Rawhide в репозитарий Sisyphus.
Также, при разработке программного комплекса автоматизации портирования и сопровождения программных пакетов из Fedora Rawhide в 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) в качестве репозитория назначения. Также указывается режим соответствия трансляция один-к-одному или трансляция один-ко-многим.
Утилиты сопровождения позволяют находить потенциальные соответствия по заданным алгоритмам и заносить их в БД после подтверждения оператором, находить устаревшие соответствия и перемещать их в соответствия релизов и т. д.
Для удобства расширения и сопровождения база данных сделана модульной.
внутренние служебные утилиты DistroMap
Фильтры
Фильтры distromap работают с табличными текстовыми файлами, где колонки разделяются последовательностью пробельных символов (\s+). В каждой строке (кроме пустых и #-комментариев) в указанной колонке значение заменяется на значение из базы distromap. По умолчанию замена производится в первой колонке. Если замена не найдена, содержимое не меняется. Примеры:
- замена имен src.rpm fedora -> altlinux (надо установить distromap-fedora-rawhide-altlinux-sisyphus)
echo PyYAML | distromap-filter-translate-source-names --originrepo fedora --destrepo altlinux python-module-yaml
- обратная замена имен src.rpm fedora <- altlinux.
Если делать как в прошлом примере, то надо иметь обратную базу distromap-altlinux-sisyphus-fedora-rawhide. Но поскольку такой сейчас нет, можно исхитриться и с имеющейся distromap-fedora-rawhide-altlinux-sisyphus, вызвав другую утилиту:
echo python-module-yaml | distromap-filter-reverse-translate-source-names --originrepo fedora --destrepo altlinux PyYAML
- замена имен бинарных rpm fedora -> altlinux (надо установить distromap-fedora-rawhide-altlinux-sisyphus)
echo argtable-devel | distromap-filter-translate-binary-names --originrepo fedora --destrepo altlinux libargtable2-devel
- CPAN, PyPI. distromap-filter-translate-*-names с ними не работают, для них есть отдельные утилиты.
distromap-filter-translate-altlinux2cpan distromap-filter-translate-altlinux2pypi distromap-filter-translate-cpan2altlinux distromap-filter-translate-pypi2altlinux
Пример:
echo Arp | distromap-filter-translate-cpan2altlinux perl-Arp
классы данных
Основные:
TODO:
Дополнительно:
В структуре описания репозитария:
- Допустимые группы rpm
- файлы конфигурации pkg-config
- соответствие бинарных и исходных пакетов
В структуре описания трансляции репозитариев:
- поддержка несравнимых по версиям соответствий пакетов
- поддержка списка избыточных пакетов, подлежащих удалению из сборочных либо установочных зависимостей
- поддержка списка избыточных пакетов, для которых из сборочных либо установочных зависимостей должны быть удалены версии (несравнимые по версиям пакеты включаются в этот список автоматически).
- точные соответствия групп rpm
- нестрогие соответствия групп rpm.
Продолжена работа по наполнению БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus. Текущая БД трансляции содержит 1280 записей для случаев, когда имена пакетов или других сущностей различны. БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus оформлена в виде программного пакета для нестабильной ветви «Sisyphus» репозитория СПО. Дополнительно к уже имеющейся БД трансляции пространства имен репозитариев пакетов свободного программного обеспечения Fedora Rawhide и Sisyphus начата работа по наполнению БД трансляции пространств имен из нестабильной ветви «Sisyphus» в стабильную ветвь t6 репозитария пакетов свободного программного обеспечения. БД состояния репозитория теперь обновляются ежедневно и доступны online: БД текущего состояния нестабильной ветви «Sisyphus» репозитория СПО доступно с сайта http://repocop.altlinux.ru, БД текущего состояния стабильной ветви «t6» репозитория СПО доступно с сайта http://autoports.altlinux.ru. Интерфейсный модуль perl переписан для использования новых классов данных, добавленых для БД состояния репозитория и БД трансляции пространства имен репозитариев.
Разработано при поддержке Фонда содействия развитию МП НТС в рамках НИОКР 01201066526 |