Сборка пакетов rpm при помощи mockchain
Сборка пакетов при помощи утилиты 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'ами, в которых указаны не все сборочные зависимости.