RPMの魔法はそれです パッケージをビルドするためのすべての手順は、単一のSPECファイルに含まれています。 もちろん、最初にそれを理解する必要があり、時にはそれは簡単ではありません... |
SPECファイルとは何ですか?
基本的には、パッケージのビルド、インストール、アンインストールの方法を示すファイルです。
私たちがあなたに与えることになる指示は、段階に分けられ、それは順番にマクロです。 これらは、次の基本的な段階です。
- %準備:ソースが解凍され、パッチが適用されます。
- %ビルド:バイナリがコンパイルされます。
- % 小切手:正しくコンパイルされていることを確認します。
- %インストール:設置訓練を実施します。
- %ファイル:パッケージに表示されるすべてのファイルを一覧表示します。 また、属性を割り当てるためにもよく使用されます。 リストされていないファイルがある場合、そのファイルはビルドされません。
一部のSPECには、一部のステージがない場合があります。 それらは必須ではありません.
と呼ばれる他の段階があります スクリプトレット。 これらは、パッケージのビルド時ではなく、インストールまたはアンインストール時に実行されるため、特別です。 別のパッケージがインストールされたときに実行するトリガーをスケジュールすることもできます。 これは、RPMがDEBファイルよりも優れている大きな利点のXNUMXつです。
RPMの大きな混乱はそれです すべてに同じ構文があります。 つまり、これらすべての特別な単語の前にパーセント記号(%)はRPMマクロですが、すべての種類のマクロがあります。
- 機能(%セットアップ、%構成、%パッチ…)
- 事前定義された変数(%_bindir、%dist…)
- SPEC自体で定義された変数(%buildroot、%name、%version ...)
- 静的セクション(%description、%changelog…)
- ステージ(ビルド%、インストール%…)
- トリガー(%triggerin、%triggerpostun…)
- スクリプトレット(%pretrans、%postun ...)
特定のマクロがどのように使用されているかを知るための唯一の方法は ドキュメントを参照してください。 実は、他のトリックをいつでも使用できます。 SPECがあなたと同じようなパッケージでどのように作られているかを見てください、または試行錯誤の方法。 対 実用的なコマンド:
rpmbuild --showrc#すべてのマクロを表示する
rpmbuild --eval = "%macro_name"#展開されたマクロを表示する
マクロの周りに角かっこがある場合、マクロは同じです。 角かっこの後に疑問符がある場合、展開するものがない場合は空白になります。 例えば、 1%{?距離} に拡大します 1.fc16 Fedora 16では、しかし別のディストリビューションでは、 1.
食欲をそそる
私たちはすでにこのチュートリアルの第XNUMX回目ですが、何をパックするかまだわからないので、ここにあなたの口を開くためのビデオがあります: