Есть ли инструмент, который позволяет установить зависимости RPM .spec в изолированную среду? Я не буду устанавливать такие зависимости глобально в системе, и я не могу это сделать, поскольку у меня нет привилегий root.
Причина
Я хочу собрать пакет А что зависит от более новой версии B (который нельзя установить в системе глобально).
Мне нравится создавать более новую версию B и позвольте инструменту сборки установить Bс -devel
в изолированную среду, чтобы предоставить все необходимые файлы для сборки А.
Решения
chroot
?Да, инструмент называется mock
и это в EPEL.
Типичное использование:
rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm
На самом деле это предпочтительный способ создания RPM именно потому, что он изолирует процесс от системы, чтобы не возникали неожиданные зависимости.
Вы можете изменять файлы в /etc/mock
чтобы он загружал ваши собственные пакеты, частное репо и т. д., или проверьте документацию для получения информации о том, как добавлять пакеты в mock
окружение chroot вручную.
Обратите внимание, что пользователей следует добавлять в mock
группа, которой разрешено использовать mock
.
Не случайно koji
сервер сборки, который Red Hat использует вызовы mock
для создания каждого отдельного пакета. Если вам нужно построить много пакетов все время, возможно, стоит подумать о настройке koji
сервер сборки.
Я считаю, что попытки собрать пакеты на рабочих хостах - плохая практика, и попытка сделать это без привилегий root сложнее, чем создание собственных машин сборки. Обычно я делаю следующее.
Вы хотите использовать mock. Это позволяет вам создавать RPM в chroot