Сборка rpm пакета с помощью mock — различия между версиями
DenisovaA (обсуждение | вклад) |
DenisovaA (обсуждение | вклад) |
||
Строка 43: | Строка 43: | ||
Файл конфигурации включает следующие данные: | Файл конфигурации включает следующие данные: | ||
− | config_opts['root'] = 'AlterOS-7.5-x86_64' // '' | + | config_opts['root'] = 'AlterOS-7.5-x86_64' // ''Опция, которая создает папку с названием 'AlterOS-7.5-x86_64' в папке mock'' |
− | config_opts['target_arch'] = 'x86_64' // '' | + | config_opts['target_arch'] = 'x86_64' // ''Опция, которая указывает целевую архитектуру процессора'' |
config_opts['legal_host_arches'] = ('x86_64') // ''Архитектура хоста'' | config_opts['legal_host_arches'] = ('x86_64') // ''Архитектура хоста'' | ||
config_opts['chroot_setup_cmd'] = 'install @buldsys-build' // ''Установка пакета 'buldsys-build''' | config_opts['chroot_setup_cmd'] = 'install @buldsys-build' // ''Установка пакета 'buldsys-build''' |
Версия 14:10, 12 октября 2021
Утилита Mock
Mock — это простая программа, которая будет создавать исходные RPM внутри chroot.
Mock является утилитой для сборки пакетов RPM. Подходит для сборки пакетов в различных версиях CentOS/Red Hat и Fedora.
Chroot – операция изменения корневого каталога в ОС, предназначенная для создания нового окружения.
Содержимое корневого каталога определяется указанной конфигурацией с опцией -r. Файл конфигурации по умолчанию - /etc/mock/default.cfg, который обычно является символической ссылкой на одну из установленных конфигураций.
Основное преимущество использования mock вместо rpmbuild для сборки пакетов заключается в том, что mock собирает пакет RPM в чистой среде. Mock делает это, создавая chroot и выполняя сборку RPM в chroot.
Проверить наличие данной утилиты можно с помощью команды:
$ mock --version
Установка утилиты mock происходит при выполнении команды:
$ sudo yum install mock
Структура mock: mock [options]
После [options] также может идти [команда], например, mock [options] --chain SRPM [SRPM...]
Параметры(options) для данной утилиты можно посмотреть с помощью команды:
$ mock --help
Для более подробной информации про утилиту mock и её команды можно с помощью:
$ man mock
Mock имеет свои файлы в следующих каталогах:
• /etc/mock — конфигурационные файлы;
• /var/lib/mock — каталог хранения chroot окружений и результатов сборки (Может быть очищен пользователем с помощью команды $ mock clean).
Файл конфигурации по умолчанию — /etc/mock/default.cfg, который обычно представляет собой символьную ссылку на одну из установленных конфигураций. В файле конфигурации указывается архитектура ЦП и версия chroot для Linux.
Файл конфигурации включает следующие данные:
config_opts['root'] = 'AlterOS-7.5-x86_64' // Опция, которая создает папку с названием 'AlterOS-7.5-x86_64' в папке mock config_opts['target_arch'] = 'x86_64' // Опция, которая указывает целевую архитектуру процессора config_opts['legal_host_arches'] = ('x86_64') // Архитектура хоста config_opts['chroot_setup_cmd'] = 'install @buldsys-build' // Установка пакета 'buldsys-build' и другие
Сборка RPM пакета
Структура команды для сборки пакета с исходниками(SRPM): mock [options] --buildsrpm {--spec spec --sources src --symlink-dereference | --scm-enable}
Для сборки пакетов(SRPM и RPM) необходимо наличие исходных файлов и файла-конфигурации, подробнее о том, что нужно для сборки пакетов можно посмотреть здесь.
Чтобы собрать пакет с исходниками(SRPM), на основе которого потом будет собираться бинарный пакет(RPM) с помощью утилиты mock, необходимо выполнить команду:
$ mock -r <файл_конфигурации.cfg> --buildsrpm --spec=путь/к/spec_файлу.spec --sources=путь/к/исходникам --resultdir=место/куда/должен/собраться/SRPM_пакет
-r - опция, которая использует конфигурацию chroot, как определено в файле /etc/mock/<confug>.cfg
После сборки SRPM необходимо собрать бинарный пакет(RPM) с помощью команды:
$ mock --rebuild путь/к/пакету_SRPM.src.rpm --resultdir=место/куда/должен/собраться/RPM_пакет
Если в обеих командах не указывать --resultdir=, то пакеты установятся в папку /mock/../result
После этого необходимые пакеты будут собраны туда, куда вы указали в команде. RPM пакеты также можно собирать с помощью утилиты rpmbuild, подробнее здесь