軟體包維護者預先安裝腳本“安裝”與“升級”

軟體包維護者預先安裝腳本“安裝”與“升級”

根據 Debian 軟體包維護者腳本文檔install,可以使用第一個參數或第一個參數來呼叫預先安裝腳本upgrade

preinst腳本可以透過以下方式呼叫:

  • new-preinst安裝
  • new-preinst安裝舊版 新版本
  • new-preinst升級舊版 新版本

install old-version new-version和 和有什麼差別upgrade old-version new-version?第一種形式(只是install)似乎很清楚,但我不明白舊版本號和新版本號之間的區別install以及指定的位置。upgrade

答案1

這在中進行了解釋“詳細資料”部分:

  • 如果軟體包已經完全安裝,則使用舊版本和新版本preinst進行呼叫;upgrade
  • 如果該軟體包之前已安裝,並且仍然具有其設定檔(處於「Config-Files」狀態,IE它顯示為rcdpkg -l輸出),preinstinstall和 舊版本和新版本調用;
  • 如果軟體包是新安裝的,或之前被清除的,preinst則呼叫時install不帶版本資訊。

由於preinst在解包階段之前運行,upgrade表示包內容的先前版本可用,而install表示包內容不存在任何版本(配置文件除外)。另外,如果提供版本信息,則表明可能有配置文件需要處理。

upgrade和之間的差異並不install顯著,但我確實想到的一種情況是涉及導出資料的升級。例如,在upgrade模式下,slapd匯出preinst其資料庫;它無法在install模式下執行此操作,因為不存在適當的工具。

答案2

考慮:

  1. 您安裝軟體包 A,版本 x。
  2. 您刪除了軟體包 A,但沒有清除,因此設定檔、使用者、群組等仍然存在。
  3. 您安裝軟體包 A,版本 y。

現在維護者腳本需要處理這些設定檔、使用者、群組等,儘管嚴格來說,您不是在升級,而只是在安裝。您可以在第二個流程圖中看到這一點:“安裝之前已刪除但未清除的軟體包”

相關內容