Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017) — различия между версиями

Материал из 0x1.tv

(Batch edit: replace PCRE (\n\n)+(\n) with \2)
 
(не показано 5 промежуточных версий этого же участника)
=== Обновление пакетов ===
Отслеживание новой версии пакета может осуществляться как традиционным способом — через файл .watch (в стиле Debian),
так и современным способом — через отслеживание новых тегов в апстримных репозиториях Git
([https://www.altlinux.org/Gear/remotes]). Обновление пакета с помощью файла .watch осуществляется командой
<tt>rpm-uscan</tt>, которая не только скачает архив с новой версией, но и правильно обновит gear-репозиторий и спек.

Использование утилит gear-remotes* из пакета <tt>perl-Gear-Remotes</tt> состоит из следующих этапов:


#  сохранение ссылки на апстримный репозиторий Git: <tt>gear-remo\-tes-save</tt>;
#  возможное исправление фильтрования и преобразования тегов;
#  вызов <tt>gear-remotes-watch</tt> для поиска нового тега;
#  вызов <tt>gear-remotes-</tt><tt>uscan</tt> для собственно сборки новой версии в текущем gear-репозитории.

=== Пересборка пакетов ===
Ещё одной достаточно трудоёмкой задачей становится массовая пересборка пакетов при обновлении системообразующих тулкитов
и библиотек. Например, для обновления версии Ruby потребовалось пересобрать более 80 пакетов. Для массовой пересборки
пакетов потребовалось всего лишь для каждого пакета склонировать и обновить gear-репозиторий с
[https://git.altlinux.org] и воспользоваться утилитой <tt>srpmnmu</tt> из пакета <tt>perl-RPM-Source-Editor</tt>:

<pre>
srpmnmu -i "$(gear-rules-print-specfile)" \
  -ch "- Rebuild with Ruby 2.4.1" \
  --nextrel nmuadd
</pre>
после чего закоммитить, установить тег и добавить в общее задание на пересборку.

{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->


{{fblink|1949247641994914}}                                          
{{vklink|755}}                                          
<references/>
[[File:{{#setmainimage:Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017)!.jpg}}|center|640px]]



{{stats|disqus_comments=0|refresh_time=2020-2021-08-31T18:09:01-28T14:46:03.845079040094|vimeo_comments=0|vimeo_plays=257|youtube_comments=0|youtube_plays=22}}

[[Категория:OSSDEVCONF-2017]]
[[Категория:Инструменты майнтейнеров]]
[[Категория:ALT Linux]]

Текущая версия на 12:23, 4 сентября 2021

Докладчик
Андрей Черепанов.jpg
Андрей Черепанов

В докладе рассматриваются процедуры и программные средства, снижающие трудозатраты по сборке и поддержки актуальности пакетов в рамках репозитория Sisyphus.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Презентация

Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017).pdf

Thesis

При сопровождении большой пакетной базы, которым является репозиторий Sisyphus, для каждого мейнтейнера становятся важными следующие факторы:

  • упрощение сборки новых пакетов;
  • единообразие типовых файлов .spec (спеков);
  • снижение рисков ошибок при написании спеков;
  • снижение трудозатрат для создания и сопровождения своих пакетов.

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

Сборка новых пакетов

Для создания спеков по типовым шаблонам был написан простой скрипт genspec на Python с шаблонами для обычного пакета со сборкой на autotools (configure;make;make install), noarch (для скриптов), модулей Python, Ruby и Java (со сборкой посредством Maven). В отличие от специализированных скриптов (типа gem2spec) было выбрано создание универсального решения.

Изначально все параметры нужно было указывать в параметрах командной строки:

genspec \ 
-t python \ 
-n aeroolib \ 
-v 1.0.0 \ 
-s "Low level python library for Aeroo Reports" \ 
-l 'GPLv3' \ 
-u 'https://github.com/aeroo/aeroolib' \ 
-c '- Initial build in Sisyphus' \ 
-d "Low level python library for Aeroo Reports."

Позднее скрипт стал работать в том числе и в интерактивном режиме, запрашивая у пользователя поля подстановки. Наличие стандартизованного API у github.com, на котором расположены огромное количество свободных проектов (особенно это касается модулей Ruby), привело к созданию скрипта github2spec, который может брать сам код и метаданные для заполнения спека, преобразовывать в gear-репозиторий и добавлять заполненный спек:

github2spec -u https://github.com/cryptosphere/rbnacl

После этого достаточно закоммитить изменения и отправить на сборку.

Обновление пакетов

Отслеживание новой версии пакета может осуществляться как традиционным способом — через файл .watch (в стиле Debian), так и современным способом — через отслеживание новых тегов в апстримных репозиториях Git ([1]). Обновление пакета с помощью файла .watch осуществляется командой rpm-uscan, которая не только скачает архив с новой версией, но и правильно обновит gear-репозиторий и спек.

Использование утилит gear-remotes* из пакета perl-Gear-Remotes состоит из следующих этапов:

  1. сохранение ссылки на апстримный репозиторий Git: gear-remo\-tes-save;
  2. возможное исправление фильтрования и преобразования тегов;
  3. вызов gear-remotes-watch для поиска нового тега;
  4. вызов gear-remotes-uscan для собственно сборки новой версии в текущем gear-репозитории.

Пересборка пакетов

Ещё одной достаточно трудоёмкой задачей становится массовая пересборка пакетов при обновлении системообразующих тулкитов и библиотек. Например, для обновления версии Ruby потребовалось пересобрать более 80 пакетов. Для массовой пересборки пакетов потребовалось всего лишь для каждого пакета склонировать и обновить gear-репозиторий с [2] и воспользоваться утилитой srpmnmu из пакета perl-RPM-Source-Editor:

srpmnmu -i "$(gear-rules-print-specfile)" \
  -ch "- Rebuild with Ruby 2.4.1" \
  --nextrel nmuadd

после чего закоммитить, установить тег и добавить в общее задание на пересборку.

Примечания и ссылки

Процедуры и программные средства, упрощающие сборку и сопровождение пакетов (Андрей Черепанов, OSSDEVCONF-2017)!.jpg

Plays:49   Comments:0