2017-07-20 15 views
1

アップグレードRPMの場合は、%postセクションを終了する方法はありますか?RPMアップグレードポストインストール出口

私は以下のセクションで簡単なrpmを持っています。 注:%postで終了しました。

rpm -Uvh package_nameを実行すると、%postセクションでエラーが発生しました。出口は%postセクションからのみ起こります。しかしrpmは%preunと%postunセクションで続行されます。

%postセクションにエラーがある場合は、ただ終了します。 これを達成できますか?

%pre 
    perform few checks here 

    %post 
    perform upgrade steps. 
    If there is a error performing upgrade steps. **Then exit** 

    %preun 
    Perform pre-uninstall checks 


    %postun 
    Perform un-installation steps of previous package 

このアップグレードrpmパッケージで誰かが明確にできるかどうか。

答えて

0

アトル。

%post script let(script let 終了コードはRPMによって無視されます)でrpmトランザクションを中止することはできません。

+1

右、私はそうでなければならないと信じています。 1つは%postでrpmを中止できません – Atul

0

終了で何を意味するのかはっきりしない:RPM exit?スクリプトレットの終了後%ですか?

%postにゼロ以外の終了コードがある場合は、RPMでアップグレードを停止することをお勧めします。これは既に実装されています:%postからのゼロ以外の戻り値は、アップグレードされている古いパッケージの消去をキャンセルします。

アップグレード中のパッケージのセットは、セット内の一部のパッケージに障害が発生しても「ベストエフォート」を継続します。

新しいパッケージにインストールされているファイルはどれもパスを上書きすることに注意してください。これは%postが実行される前に行われます。したがって、%postの終了は既に起こったことを止めることができません。

+0

ありがとうございます。私は完全なRPM出口を探していました。 – Atul

+0

ありがとうございましたJeff.私はもっと良い方法で試してみてください。 私は完全なRPM出口を探していました。私は以下のコードを私の %の投稿の部分に記載しました\t \t [$? != 0];その後、 \t \t \tは "コピーコード?:$ - 失敗" エコー \t \t 1番出口 \t Fiの を私はちょうどRPMは%preunと%postunセクションを続行する必要はありません。しかし、rpmは%preunと%postunで続行しません。 – Atul

+0

RPMの "従来の"動作は、アップグレードのインストール半分の終了コードをチェックし、アップグレードの半分を削除しようとしませんでした(preun /メモリが使用されている場合はpostletスクリプトレット)。私は現在何が実装されているのか分からない(しかしあなたはスクリプトが動いていることをはっきりと見ている)。 –