2016-08-05 9 views
0

私はRPMビルでnewbyです。ターゲットマシンに/ etc/i-am-a-requirementファイルが存在する場合にのみ、パッケージをインストールするRPMをビルドする必要があります。だから、私は通常、私たちはRPMが依存パッケージを持っていることを期待していることを知っているが、それはパッケージを持っていないので、この場合の「/ etc/I-AM-要件は」、バイナリとして配布されてSPECファイルスクリプトの%preセクションが偽を返した場合のRPMインストールをロールバックする方法

%pre 
if test -f "/etc/i-am-a-requirement"; then 
echo "I'm OK to continue" 
else 
echo "The file is not found, the RPM won't be installed" 
-- How to add failure here? -- 
fi 

を書きましたまったく。

+0

http://stackoverflow.com/questions/9932562/how-to-exit-rpm-install-in-case-of-an-error?rq = 1 –

答えて

1

%pre,などのスクリプトでは、rpmのインストールを停止できません。スクリプトレットの内部にいれば、スクリプトレットの終了コードがインストールされます。あなたが使用する必要があります

が必要です:

Requires: /etc/i-am-a-requirement 
+1

'/ etc/i-am-a-requirement'がrpmパッケージ自体にない場合は動作しますか? – WilQu

+1

'%post'はできませんが、'%pre'は 'false'を呼び出すことができます。それはあなたがスクリプトで何をしたかを「ロールバック」しません。あなたが答えたRequiresフラグについては、それが適切な解決策です。ファイルシステムを直接見たり、RPM DBをチェックしたりすると、私は不明確です。 –

+0

説明のために@aaronに感謝します。 wilqu:はいそれは単なるファイルでも動作しますが、Aaron氏によると、ディスク上のファイルを検索するのか、rpmデータベースだけを検索するのかは分かりません。 –

関連する問題