您將如何測試套件管理器將安裝的可用目錄?

您將如何測試套件管理器將安裝的可用目錄?

我正在嘗試為具有多個依賴項的系統製作一些安裝腳本,並且在進行任何實際安裝之前,我已經弄清楚如何使用--dry-run套件管理器(在本例中為 Ubuntu )。apt

但是,安裝軟體包後,需要複製某些設定檔。在提交安裝之前,我將如何檢查這一點以確保目標可用?

我不想執行腳本來部分安裝東西並使系統處於不可預測的狀態,但如果涉及的套件不存在,配置目錄也不存在供我檢查。

假設我想複製到base.confto /etc/package/system/,但/etc/package/根本不存在。如果目標設定錯誤(例如拼字錯誤sytem),則在複製過程中安裝套件後會出錯,這可能是已複製的多個設定檔之一,所以我沒有辦法「回滾」可以這麼說。我的最終目標是安裝過程不會留下部分複製的檔案。

失敗場景是需要複製多個文件時。如果有 3 個文件要複製,並且第 3 個文件的目標配置錯誤,它仍會複製前 2 個文件,並在第 3 個文件時出錯。殘留檔案將在下次運行時導致進一步的錯誤。

PS:我懷疑我可能需要創建一個真正的包來處理依賴項,但所需的複雜性和時間要高得多,我現在不想投資。

答案1

您可以提前檢查包的內容,甚至無需下載它們;請參閱apt-file及其list命令。

然而,這永遠不會給您一個完整的畫面,而且您無法在不安裝任意套件的情況下建立其所做更改的完整畫面:套件可以提供執行其他變更的維護者腳本。這意味著套件可以建立目錄,而從套件的元資料中看不到這一點,您只能透過分析維護者腳本來找到它,並考慮到它們的所有副作用以及套件的依賴項的副作用。

在你的場景中,我懷疑你需要一個兩階段的方法:

  • 使用套件管理系統安裝您需要的所有套件;
  • 檢查您對產生的目錄佈局和安裝的檔案的所有期望,以及
    • 如果滿足您的期望,請將所有其他文件複製到位;
    • 如果不是,請清除您安裝的所有軟體包(這樣--autoremove所有自動安裝的依賴項也會被刪除)。

相關內容