Я изменяю автоматизированную сборку и хочу сказать rpmbuild
использовать определенную область сборки при вызове его.
Это подобно существующему вопросу, но более конкретно.
Я не хочу выполнять любую из команд сборки как пользователь root; цель только, чтобы иметь об/мин, не установить что-либо в систему.
Я не хочу требовать, чтобы пользователь изменил их dotfiles (например. $HOME/.rpmrc
); сборка должна быть автономной и не влиять на существующие настройки пользователя.
Я не хочу к твердому коду местоположение в foo.spec
файл; тот файл должен быть применимым как есть, если пользователь хочет создать в другом месте.
--buildroot
опция не то, в чем я нуждаюсь; это устанавливает псевдокорневую файловую систему для make
часть процесса сборки, но я должен указать “область сборки” для всего процесса сборки об/мин.
То, что я ищу, является гипотетическим --build-area FOODIR
опция, которая может быть дана rpmbuild
команда или эквивалентная переменная среды. Это должно таким образом влиять просто, что единственный вызов команды и заставляет это использовать указанное перезаписываемое пользователем местоположение для своей области сборки.
Я видел ссылки на a _topdir
макрос, который, кажется, то, о чем я говорю, но это, кажется, не настраивается на вызов.
Это было бы идеально если rpmbuild
мог настроить его собственную среду в том месте, когда ей нужен он, но я не возражаю настраивать каталоги для этого на сборку, так как это может быть автоматизировано как часть сборки. Цель состоит в том, чтобы иметь то перезаписываемое пользователем расположение, существуют только на время сборки, выполненной, и затем моются путем удаления, что все местоположение однажды файл об/мин сгенерировано.
Опция --buildroot - это не то, что вы ищете. Название немного вводит в заблуждение, поскольку она не изменяет корень сборки, а вместо этого устанавливает корень для фазы установки сборки. По сути, RPM выполняет "make install" как часть сборки, а затем упаковывает результаты этой установки. Опция buildroot позволяет выполнить установку, например, в /tmp/myinstallroot.
Недавно мне пришлось интегрировать сборку пакетов rpm в автоматизированную сборку, и я столкнулся с той же проблемой. Я создал пользовательский файл .rpmmacros с %topdir, установленным соответствующим образом. Затем я просто временно изменил HOME на местоположение этого пользовательского файла .rpmmacros.
"HOME=mytopdir rpmbuild ...".