Как установить область сборки для rpmbuild на вызов

Я изменяю автоматизированную сборку и хочу сказать rpmbuild использовать определенную область сборки при вызове его.

Это подобно существующему вопросу, но более конкретно.

  • Я не хочу выполнять любую из команд сборки как пользователь root; цель только, чтобы иметь об/мин, не установить что-либо в систему.

  • Я не хочу требовать, чтобы пользователь изменил их dotfiles (например. $HOME/.rpmrc); сборка должна быть автономной и не влиять на существующие настройки пользователя.

  • Я не хочу к твердому коду местоположение в foo.spec файл; тот файл должен быть применимым как есть, если пользователь хочет создать в другом месте.

  • --buildroot опция не то, в чем я нуждаюсь; это устанавливает псевдокорневую файловую систему для make часть процесса сборки, но я должен указать “область сборки” для всего процесса сборки об/мин.

То, что я ищу, является гипотетическим --build-area FOODIR опция, которая может быть дана rpmbuild команда или эквивалентная переменная среды. Это должно таким образом влиять просто, что единственный вызов команды и заставляет это использовать указанное перезаписываемое пользователем местоположение для своей области сборки.

Я видел ссылки на a _topdir макрос, который, кажется, то, о чем я говорю, но это, кажется, не настраивается на вызов.

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

36
задан Community 23 May 2017 в 12:03
поделиться

1 ответ

Опция --buildroot - это не то, что вы ищете. Название немного вводит в заблуждение, поскольку она не изменяет корень сборки, а вместо этого устанавливает корень для фазы установки сборки. По сути, RPM выполняет "make install" как часть сборки, а затем упаковывает результаты этой установки. Опция buildroot позволяет выполнить установку, например, в /tmp/myinstallroot.

Недавно мне пришлось интегрировать сборку пакетов rpm в автоматизированную сборку, и я столкнулся с той же проблемой. Я создал пользовательский файл .rpmmacros с %topdir, установленным соответствующим образом. Затем я просто временно изменил HOME на местоположение этого пользовательского файла .rpmmacros.

"HOME=mytopdir rpmbuild ...".
4
ответ дан 27 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: