Назад | Перейти на главную страницу

RedHat: можно ли устанавливать пакеты в своего рода имитацию среды для создания RPM

Есть ли инструмент, который позволяет установить зависимости RPM .spec в изолированную среду? Я не буду устанавливать такие зависимости глобально в системе, и я не могу это сделать, поскольку у меня нет привилегий root.

Причина

Я хочу собрать пакет А что зависит от более новой версии B (который нельзя установить в системе глобально).

Мне нравится создавать более новую версию B и позвольте инструменту сборки установить Bс -devel в изолированную среду, чтобы предоставить все необходимые файлы для сборки А.

Решения

Да, инструмент называется 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 сложнее, чем создание собственных машин сборки. Обычно я делаю следующее.

  1. Установите VirtualBox или аналогичный инструмент на свой компьютер / ноутбук
  2. Создайте 32/64 виртуальных машины той ОС, которую вы используете в производстве
  3. Установите обычно инструменты mock, rpmbuild и т. Д.
  4. Создайте RPM для пакета и любых дополнительных зависимостей для обеих арок на ваших виртуальных машинах.
  5. После тестирования поместите RPM во внутреннее хранилище для распространения на ваши серверы.
  6. Протестируйте еще раз, чтобы убедиться, что используются правильные зависимости.
  7. Выпустите через управление конфигурацией.

Вы хотите использовать mock. Это позволяет вам создавать RPM в chroot

https://fedorahosted.org/mock/