自動ビルドを変更していて、rpmbuild
に呼び出すときに特定のビルド領域を使用するように指示したいと思います。
これは 既存の質問 に似ていますが、より具体的です。
Rootユーザーとしてビルドコマンドを実行したくありません。目的はRPMを持つことだけであり、システムに何もインストールすることではありません。
したくない ユーザーにドットファイルの変更を要求する (例:$HOME/.rpmrc
);ビルドは自己完結型であり、ユーザーの既存の設定に影響を与えないようにする必要があります。
場所をfoo.spec
ファイルにハードコーディングしたくありません。ユーザーが別の場所にビルドする場合は、そのファイルをそのまま使用できる必要があります。
--buildroot
オプション は私が必要とするものではありません。これは、ビルドプロセスのmake
部分に疑似ルートファイルシステムを設定しますが、全体RPMビルドプロセスの「ビルド領域」を指定する必要があります。
私が探しているのは、rpmbuild
コマンドに指定できる架空の--build-area FOODIR
オプション、または同等のものです。環境変数。したがって、コマンドの1回の呼び出しにのみ影響し、ビルド領域に指定されたユーザー書き込み可能な場所を使用するようになります。
私が話しているように見える_topdir
マクロへの参照を見てきましたが、呼び出しごとに構成可能ではないようです。
rpmbuild
が必要なときにその場所に独自の環境をセットアップできれば理想的ですが、ビルドの一部として自動化できるため、ビルドごとにディレクトリをセットアップしてもかまいません。 。目標は、ビルド実行中のみユーザーが書き込み可能な場所が存在するようにし、RPMが完了したらその場所全体を削除してクリーンアップすることです。ファイルが生成されます。
文書化されていませんが、_topdir
マクロがビルド領域を決定します。
したがって、この呼び出しごとにrpmbuild --define "_topdir ${PWD}/foobar" ...
を使用して設定し、ディレクトリを任意の値に設定できます。
--define
は、_topdirだけでなく、任意のマクロの値を設定するための鍵です。
--buildrootオプションは、探しているものではありません。この名前は、ビルドルートを変更するのではなく、ビルドのインストールフェーズのルートを設定するため、少し誤解を招く可能性があります。 RPMは基本的に、ビルドの一部として「make install」を実行し、その結果をパックしています。 buildrootオプションを使用すると、このインストールをたとえば/ tmp/myinstallrootに実行できます。
最近、rpmパッケージビルドを自動ビルドに統合する必要があり、同じ問題が発生しました。私がしたことは、%topdirが適切に設定されたカスタム.rpmmacrosファイルを生成することでした。次に、HOMEをそのカスタム.rpmmacrosファイルの場所に一時的に変更します。
"HOME=mytopdir rpmbuild ...".