Debian
使用互動式提示自動安裝單個 debian 8 軟體包
我希望通過 bash 腳本自動化一些軟體包安裝;它們將被安裝到預先存在的 chroot 文件系統中。然而,一些軟體包涉及互動式使用者輸入(即 ddclient 要求選擇一個動態 DNS 服務提供商),我無法輕鬆地實現自動化。
debconf 預置似乎是自動化互動式軟體包安裝的最常用方法,但我讀過的所有範例都暗示它適用於整個 Debian 安裝,而不僅僅是單個軟體包。
我一直在關注如何自動化互動式 Debian 軟體包安裝,但它並沒有真正解釋細節。
提前致謝!
如果不使用諸如 Ansible 或 Salt 之類的“適當”部署和配置管理工具,
debconf
預置就足以預配置 Debian 軟體包。它完全不限於完整的安裝。它可以應用於任意數量的包。開始使用它的最簡單方法是手動配置要安裝的包,方法是安裝包並回答問題。然後執行
debconf-get-selections
(從debconf-utils
包中);這將列出所有儲存的設置,包括您剛剛安裝的軟體包的設置,以及評論中的問題文本——因此您可以輕鬆找到您想要預置的問題。格式是<package> <debconf key> <type> <value>
例如
# System's default paper size: # Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet libpaper1 libpaper/defaultpaper select a4
將要預置的設置儲存在文件中,然後在目標系統上執行
debconf-set-selections
(在debconf
包中),使用本地可用的文件並命名為第一個參數,或者通過管道傳輸其內容:cat preseed-file | ssh remotehost debconf-set-selections
在目標系統上安裝軟體包之前執行此操作。