rpm scriplets 回傳 1 的效果是什麼?

rpm scriplets 回傳 1 的效果是什麼?

根據 RPM 文檔,%預,%郵政,%preun%postunscriptlet 必須返回 0 才能進行(卸載)安裝。

(1)但是這些腳本之一會傳回非零值會產生什麼影響呢?

(2)到目前為止所做的操作是否會被撤消,使系統保持在呼叫 RPM(卸載)安裝之前的狀態?

(3)是否涉及交易機制?

我瀏覽了文件(在許多頁面上,包括 Fedora 的官方文件),但我沒有找到任何線索(至少根據我的理解,沒有任何「白底黑字」)。

答案1

我查到的資料來自於 紅帽錯誤 216221 從2006年11月開始。

貼文的最後一個條目說:

  • %pre 和 %preun scriptlet 以非零代碼退出會導致安裝/擦除失敗,就像以前一樣。需要保留此行為,因為各種套件使用它來防止在某些情況下安裝/卸載。
  • 來自其他 scriptlet 的非零退出程式碼僅被視為警告(即 %postun 失敗將記錄警告,但無論如何該套件都會被刪除)
  • 因訊號和其他「異常」方式而死亡的小腳本仍被視為錯誤
  • 對於所有 scriptlet 錯誤,將向回呼發出 RPMCALLBACK_SCRIPT_ERROR 通知,並在「amount」參數和包含 RPMRC_OK / RPMRC_FAIL 的「total」參數中傳遞失敗腳本的標記,以指示 rpm 是否將其視為警告或錯誤

答案2

我只有部分答案,但希望對你有幫助......

  1. 安裝會被考慮失敗的%preun,但據我所知,沒有真正的影響:這些文件仍然存在於您的系統上等。
  2. 沒有操作被撤銷rpm無法神奇地知道如何撤銷您放入 scriptlet 中的指令。
  3. 我真的不知道是否涉及交易機制。您可以為此執行一些測試:安裝一個好的 rpm 和一個%post腳本損壞的 rpm...

相關內容