2015-07-17 4 views
0

Я пытался понять, как создать простой RPM.Нужна помощь в понимании того, как создавать несколько RPM

У меня есть следующий репозиторий https://github.com/integralist/simple-rpm, который включает в себя соответствующий файл SPEC, и он отлично работает при генерации RPM из контейнера Docker.

Но проблема в том, что у меня есть понимание того, как создавать несколько RPM, учитывая, что я был очень вынужден использовать один каталог ~/rpmbuild для размещения файлов.

Первоначально я создал структуру каталогов тест RPM в ~/testing-rpmbuild и когда я запускал rpmbuild команду автоматически созданный ~/rpmbuild для меня, а потом начал обваливаться, как мой файл спецификации (который был в ~/testing-rpmbuild) были ссылки и другие файлы, которые не могли потому что ОС, похоже, ожидала, что она окажется внутри ~/rpmbuild (что было пустым, потому что в тот момент я не понял, что ОС автоматически создала каталог ~/rpmbuild).

Так что в конце концов я просто переместил все свои файлы с ~/testing-rpmbuild в ~/rpmbuild, и все сработало нормально. Но я не уверен, как вы планируете создавать несколько разных RPM, когда вы ограничены одним каталогом ~/rpmbuild?

ответ

1

Как правило, вы должны использовать mock для запуска вашей сборки внутри чистой среды, которая также вытащила бы и установила зависимости сборки, оставив ваш хост-компьютер в одиночку, поэтому у вас будет чистый каталог сборки и не будет создавать тот же RPM несколько раз в той же макетной сессии.

Source

Разница здесь вы используете Докер, который предоставляет некоторые из тех же преимуществ издеваться (Изолированная среда сборки), но не обеспечивает автоматическую установку пакетов на основе зависимостей сборки.

Вы можете проанализировать файл спецификации и установить зависимости во время выполнения, а затем перейти к созданию RPM.

rpmbuild по умолчанию задает ~/rpmbuild, и при запуске контейнера вам не нужно менять его в другой каталог.

Это может иметь больше смысла устанавливать текущую рабочую директорию, как объем, то строить на основе от этого, например:

FROM fedora:latest RUN yum -y install tree man man-pages make gcc rpm-build WORKDIR $HOME/rpmbuild ENTRYPOINT ["rpmbuild"] CMD ["-bb", "-v", "SPECS/*.spec"]

затем построить RPM выполните следующее:

docker run -v $(pwd):/root/rpmbuild integralist/simplerpm

и вы должны иметь RPM в RPMS/* в текущем каталоге проекта, с которого вы выполнили команду.

Кроме того, вы можете изменить директорию для сборки с помощью ~/.rpmrc со следующим:

topdir: /alternate/build/path

или указав --buildroot при создании оборотов в минуту.

Source

Смежные вопросы