Подготовка тегов¶
KOJI использует теги для идентификации и маркировки различных этапов рабочего процесса создания RPM.
Некоторые теги логически связаны вместе с одним и тем же потоком, например сборка для определенного целевого дистрибутива, например CentOS6.
Назовем этот целевой тег dist-centos7.
Но вы можете поддерживать несколько сборок дистрибутива на одном экземпляре Koji, просто добавив больше тегов, чем описано здесь.
Теги также поддерживают иерархичность и наследование.
Нам также нужен тег, который используется для сборки и наследует цель сборки. Мы называем этот тег dist-centos7-build.
Кодзи собирает пакеты RPM в chroot с помощью mock tool. Он также устанавливает базовые пакеты в эти сборки из виртуальных групп пакетов yum с именами build и srpm-build. Поэтому нам нужно сообщить Кодзи, какие пакеты нам нужны. Вы можете расширить этот список в соответствии с вашими потребностями, но выбирайте мудро: эти пакеты загружаются для каждой сборки.
Кроме того, Кодзи нужно знать, где искать/извлекать пакеты, поэтому мы добавляем внешние репозитории, базовый репозиторий как самый первый!!
При этом придерживайтесь шаблона имени тега dist-SOME_NAME, dist-SOME_NAME-build.
Инструкция¶
- переключаемся на пользователя kojiadmin
su kojiadmin
- создаем целевой тег
koji add-tag dist-foo
- создаем тег для сборки
koji add-tag --parent dist-foo --arches "i386 x86_64 ppc ppc64" dist-foo-build
- добавляем внешние репозитории (Это репозитории из которых koji будет брать пакеты необходимые для сборки)
koji add-external-repo -t dist-foo-build dist-foo-external-repo http://repo-server.example.com/path/to/repo/for/foo/\$arch/
- задаем цель сборки из созданного ранее тега
koji add-target dist-foo dist-foo-build
- добавляем группы для пакетов
koji add-group dist-foo-build build
koji add-group dist-foo-build srpm-build
- добавляем необходимые пакеты для сборки rpm в группы build и srpm-build
koji add-group-pkg dist-foo-build build <pkg1> <pkg2> .....
koji add-group-pkg dist-foo-build srpm-build <pkg1> <pkg2> .....
- Добавим пакеты, которые собираемся создавать, в свой тег.
koji add-pkg --owner <kojiuser> dist-foo <pkg1> <pkg2> .....
- обновляем репозиторий
koji regen-repo dist-foo-build
- собираем пакет
koji build dist-foo /path/to/*.src.rpm
koji создаст задачу сборки, которую можно посмотреть в
https://kojidev.platform-os.org/koji/tasks включив показ всех задач.
Перейдя в завершившуюся задачу можно найти логи и собранные файлы.
Основные ошибки сборки можно смотреть в файлах mock_output.log и root.log
Пример команд для сборки пакета binutils из локально src.rpm¶
koji add-tag dist-centos7
koji add-tag --parent dist-centos7 --arches "x86_64" dist-centos7-build
koji add-external-repo -t dist-centos7-build centos7-repo http://centos.bio.lmu.de/7/os/\$arch/
koji add-external-repo -t dist-centos7-build centos7-repo-extras https://mirror.hostart.az/CentOS/7.9.2009/extras/\$arch/
koji add-external-repo -t dist-centos7-build centos7-repo-unsupported http://springdale.math.ias.edu/data/puias/unsupported/7/\$arch/
koji add-target dist-centos7 dist-centos7-build
koji add-group dist-centos7-build build
koji add-group dist-centos7-build srpm-build
koji add-group-pkg dist-centos7-build build \
bash bzip2 coreutils cpio diffutils findutils gawk gcc \
grep sed gcc-c++ gzip info patch redhat-rpm-config \
rpm-build shadow-utils tar unzip util-linux-ng which make
koji add-group-pkg dist-centos7-build srpm-build \
bash cvs gnupg make redhat-rpm-config rpm-build shadow-utils \
wget rpmdevtools
koji add-pkg --owner kojiadmin dist-centos7 binutils
koji regen-repo dist-centos7-build
koji build dist-centos7 binutils-2.27-44.base.el7.src.rpm
Сборка из репозитория git¶
Пример команды сборки из репозитория git
koji build --scratch --no-rebuild-srpm dist-el9 'git+ssh://[email protected]/specs/bash.git#90731677c307d800f0a08bc5ba9555ffaa89084a'
При этом в /etc/kojid/kojid.conf должно быть прописано:
allowed_scms=git.org.ru:/specs/*:no
Сборка из src.rpm¶
koji build --skip-tag dist-el9 bash-1.2.3-1.el9.src.rpm
конфигурация mock¶
koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
koji edit-tag dist-el9.1-build -x mock.new_chroot=true
koji edit-tag dist-el9.1-build -x mock.releasever=9
koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
koji edit-tag dist-el9.1-build -x mock.new_chroot=True
koji edit-tag dist-el9.1-build -x mock.releasever=9
koji edit-tag dist-el9.1-build -x mock.new_chroot=False
Updated by Viacheslav Anzhiganov about 2 months ago · 1 revisions