rpm スクリプトレットが 1 を返すとどのような効果がありますか?

rpm スクリプトレットが 1 を返すとどのような効果がありますか?

RPMのドキュメントによると、%前%役職%プレアンそして%投稿インストール (アンインストール) を続行するには、スクリプトレットは 0 を返す必要があります。

(1)しかし、これらのスクリプトレットの 1 つがゼロ以外の値を返すと、どのような影響があるでしょうか?

(2)これまでに行った操作は取り消され、システムは RPM インストール (アンインストール) を呼び出す前の状態のままになりますか?

(3)トランザクションメカニズムが関係していますか?

私はドキュメント(Fedora の公式ドキュメントを含む多くのページ)を確認しましたが、手がかりは見つかりませんでした(少なくとも私の理解では「白地に黒」のものはありませんでした)。

答え1

私が見つけた情報は Redhat バグ 216221 2006 年 11 月から。以下のテキストがまだ有効かどうかはわかりません。

投稿の最後のエントリには次のように書かれています:

  • %pre および %preun スクリプトレットがゼロ以外のコードで終了すると、以前と同様にインストール/消去が失敗します。さまざまなパッケージが特定の条件下でインストール/アンインストールを防ぐためにこの動作を使用するため、この動作は保持する必要があります。
  • 他のスクリプトレットからのゼロ以外の終了コードは警告としてのみ扱われます (つまり、%postun が失敗すると警告が記録されますが、パッケージはいずれにせよ削除されます)
  • シグナルやその他の「異常な」方法で終了するスクリプトレットは、依然としてエラーとして扱われます。
  • すべてのスクリプトレットエラーに対して、RPMCALLBACK_SCRIPT_ERROR通知がコールバックに発行され、失敗したスクリプトのタグが「amount」パラメータに渡され、「total」パラメータにはRPMRC_OK / RPMRC_FAILが含まれ、rpmがそれを警告またはエラーとして処理したかどうかを通知します。

答え2

部分的な回答しかありませんが、それがお役に立てば幸いです...

  1. 設置が検討される失敗したただし、私の知る限り、実際の影響はありません。ファイルはシステムなどに引き続き存在します。%preunただし、スクリプトレットが失敗したパッケージを削除する際に問題が発生しました。
  2. 操作は元に戻されませんrpmスクリプトレットに記述したコマンドを元に戻す方法を魔法のように知ることはできません。
  3. トランザクション メカニズムが関係しているかどうかはよくわかりません。そのためには、適切な rpm と壊れた%postスクリプトを含む rpm をインストールするなど、いくつかのテストを実行できます。

関連情報