You are here: Home / Projects / Software Defined Network / Smarts / Distro / Сборка NauLinux Smarts / Сборка пакетов rpm / Сборка пакетов rpm при помощи mockchain

Сборка пакетов rpm при помощи mockchain

by Elena Korytko last modified Dec 11, 2019 09:50 PM

Сборка пакетов при помощи утилиты mockchain организована на двух виртуальных машинах, и в Самаре, в ИТМО. В Самаре используется репозиторий, размещённый в Самаре http://repository1.naulinux.ru/pub/, в ИТМО  -- репозиторий, размещённый в ИТМО http://repository2.naulinux.ru/pub/. В большинстве случаев их содержимое совпадает.

Тем, кто планирует заниматься сборкой пакетов, предлагается в списке рассылки supermemory@googlegroups.com дать заявку на создание аккаунтов на этих машинах.

Вход на виртуальную машину в Самаре осуществляется при помощи команды

ssh -p 20392 имя_пользователя@77.234.203.252

Вход на виртуальную машину в ИТМО осуществляется при помощи команды

ssh имя_пользователя@77.234.203.60

Сборка производится в каталоге /data/mock/

Для сборки очередного пакета:

  • создать каталог /data/mock/имя_каталога/srps,
  • поместить в этот каталог src.rpm для сборки,
  • перейти в каталог /data/mock/имя_каталога,
  • собрать пакет командой:
mockchain -r /etc/mock/nau76-epel-1-x86_64.cfg -m --define='vendor наименование_вендора' -m --define='packager имя_сборщика' -c --recurse -l results srpms/имя_пакета.src.rpm

где

  • /etc/mock/nau76-epel-1-x86_64.cfg - конфигурационный файл mock, в котором указаны сборочные репозитории,
  • имя_пакета.src.rpm - собираемый пакет,
  • наименование_вендора - NauLinux Team,
  • имя_сборщика - фамилия и имя сборщика пакета или NauLinux Team.

В большинстве случаев можно указывать

--define='vendor NauLinux Team'
--define='packager NauLinux Team'

В случае, если необходимо использовать пакеты, которых нет в репозитории, если это пакеты из epel, они могут быть добавлены в сборочный репозиторий - просьба присылать заявки в список рассылки supermemory@googlegroups.com. Если необходимы пакеты из fedora или из других источников, такие пакеты должны также пересобираться mock'ом. Все нужные src.rpm надо поместить в каталог /data/mock/имя_каталога/srpms и собирать пакеты той же командой, указав в конце srpms/*:

mockchain -r /etc/mock/nau76-epel-1-x86_64.cfg -m --define='vendor наименование_вендора' -m --define='packager имя_сборщика' -c --recurse -l results srpms/*

mockchain будет собирать пакеты, укладывать их в свой встроенный репозиторий и использовать его для сборки зависимых пакетов.

В ходе сборки пакета в каталоге

/data/mock/имя_каталога/results/results/nau76-epel-1-x86_64

будет организован подкаталог, имеющий имя, совпадающее с именем пакета. В этом каталоге помимо готовых бинарных пакетов и src.rpm расположены логи сборки:

  • root.log содержит информацию об установленных в ходе сборке пакетах, необходимых для сборки,
  • build.log содержит лог сборки пакета (аналог лога сборки командой rpmbuild).

Команда mockchain работает только с "хорошими" src.rpm, в spec'ах которых прописаны ВСЕ сборочные зависимости.

Некоторые пакеты (например, jsonschema) могут потребовать для сборки специальных конфигурационных файлов mock.

В некоторых случаях может оказаться удобнее воспользоваться командой mock. С ней можно использовать вспомогательные скрипты, настраивающие сборочную среду. Особенно это касается пакетов с "неаккуратными" spec'ами, в которых указаны не все сборочные зависимости.