私はFedora 31を使用してソフトウェア開発作業をしています。コードをさまざまな方法で使用する必要があります。源泉RPMパッケージは比較的短命です。だから私は単にパッケージを構築したいのですが、ほとんどの場合、実際には「インストール」ステップを実行しません。
RPM yumまたはDNFを使用してこれを行う方法はありますか?明確にするために、私はバイナリが実行されますが、「インストール」されないように仕様ファイルで指定されているようにプロジェクトをビルドしたいと思います。つまり、ビルドされたファイルを実際にシステムのファイルシステム構造にコピーしたくありません。
答え1
RPMをビルドした後、結果のバイナリをシステムにインストールしないでください(少なくともこれを使用してこの動作を観察したことはありませんrpmbuild
)。通常、パッケージのビルドに必要なSRPMとビルドの依存関係をインストールする必要があります。
各プロジェクトに関する情報を取得するためにシステムにSRPMパッケージをインストールしたくない場合は、次のことをお勧めしますSOURCES
。SPEC
mock
RPMの人々から。デフォルトのFedoraリポジトリで使用できます。dnf install mock
mock
rpmbuild
chrootを使用してSRPMから直接RPMを構築するためのラッパーです。これの利点は、SRPMやビルドの依存関係がchrootの内部にインストールされるため、メインシステムにインストールする必要がないことです。
ローカルディレクトリまたはソース管理から直接SRPMを構築することもできます。
答え2
%install
建物を建てるときのステップは実際でrpm
はありません。インストールするシステムにバイナリをインストールすると、rpmビルドステップの1つであるRPM_BUILD_ROOTにバイナリがインストールされます。
ワークフローは次のようになります。
rpm -i *.src.rpm
:インストールソースrpm。これはsrc.rpmを解凍し、ソースファイル、仕様ファイルなどを.rpmの下に配置します~/rpmbuild
。- では、ファイルをビルドするための仕様ファイルを
cd ~/rpmbuild/SPEC/
どこで見つけることができますか?rpm
- [オプション]ソースコード、仕様ファイルなどを一部変更できます。
- 今
rpm
ビルドパッケージを使用してくださいrpmbuild -ba the.spec
より詳細な説明は以下の通りである。https://blog.packagecloud.io/eng/2015/04/20/working-with-source-rpms/。
ノート:変更なしでソースrpmを書き換えたい場合は、いつでも試してみてください。rpmbuild --rebuild the.src.rpm