Mock

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Пример использования: Сборка grub из src.rpm для Centos 6 x86_64

Cначала собираем правильный src.rpm

$ cd
$ wget ftp://ftp.muug.mb.ca/pub/centos/6.0/os/SRPMS/Packages/grub-0.97-68.el6.src.rpm
$ rpm -ivh grub-0.97-68.el6.src.rpm
$ rpmbuild --nodeps -bs ~/rpmbuild/SPECS/grub.spec

Собираем бинарный пакет под нужную систему

У нас есть патченный src.rpm: ~/rpmbuild/SRPMS/grub-0.97-69.fc16.smth.src.rpm и вторым шагом нужно из него получить бинарный пакет.

Если бы это был нормальный пакет команда нужна была бы ровно одна:

$ mock -r epel-6-x86_64  ~/rpmbuild/SRPMS/grub-0.97-69.fc16.smth.src.rpm

mock автоматически создает chroot-окружение и там устанавливает базовый Centos с подключенными стандартными репозиториями. Потом сам скачивает зависимости пакета, выполняет всю сборку, складывает результаты в кучку и чистит за собой весь мусор.

Но есть одно но: 64-битному грубу для сборки нужен пакет glibc-static.i686, которого нет с репозиториях стандартной 64-битной системы. Поэтому автоматически mock его найти и установить не может, ему нужно помочь. Вместо одной команды в итоге получаем три:

$ mock -r epel-6-x86_64 --init
$ mock -r epel-6-x86_64 --install http://mirror.its.sfu.ca/mirror/CentOS/6/updates/i386/RPMS/glibc-static-2.12-1.7.el6_0.5.i686.rpm
$ mock -r epel-6-x86_64 --no-clean ~/rpmbuild/SRPMS/grub-0.97-69.fc16.smth.src.rpm

Готово.