Debian:當每次安裝/升級都必須詢問來自 dpkg 安裝的問題時,最佳實踐是什麼?
我有一個用於 Django 系統的 .deb 安裝程序,我需要向安裝該軟體的人詢問一些問題。我可以看到一些方法來做到這一點,我想知道什麼是 Debian 軟體包的最佳實踐。
現在通常,debconf 將是顯而易見的解決方案。但是在這種情況下,我想每次都問這個問題,而不是讓 Debian 記住它們並將它們應用於每次後續升級。其原因與問題的性質有關。具體來說,問題是“您現在要應用數據庫遷移嗎?” 和“你想建立一個展示數據庫嗎?”
現在,這些都可以在安裝後手動完成,但到目前為止的經驗表明,這一步很容易忘記,所以我想提示一下。我會自動執行遷移步驟,除了我們偶爾需要從其他機器遷移數據庫,並且在應用遷移之前更容易完成。“展示數據庫”問題通常僅在首次安裝時使用,因此取決於遷移情況。但是,我們不希望 Debian 記住該選擇並每次都應用它,因為它可能會損壞現有的、正在使用的數據庫。
所以我想知道正統的 Debian 式方法可能是什麼。我可以使用 postinst 腳本中的 shell 提示符,但如果有更好的方法,我會盡快這樣做。我應該補充一點,我知道“再問一次”,但這似乎只能作為一個全域設置,我會盡快為這個包做這個。
最後一件事:這是一個內部系統,永遠不會託管在公共儲存庫上,所以我不會過度擔心無人值守安裝或非 bash 安裝環境等考慮因素。
這已經困擾了我幾個星期了。感激地收到任何幫助。
有一種正統的方法可以解決您的問題,它應該允許您以“類似 Debian”的方式處理您的情況。
您可以重置 debconf 問題,以便每次都再次顯示它:用於
db_reset
忘記之前的答案(如果需要),並db_fset ... seen false
忘記之前已經顯示過該問題。這應該允許您詢問是否每次都應用遷移。為了處理展示數據庫問題,我將添加一個附加的隱藏設置,它會記住是否安裝了展示數據庫。這樣,您可以使用通常的 debconf 機制來記住問題是否已被詢問,以便僅在首次安裝時顯示;然後,可以查看demo數據庫是否已經安裝,避免安裝兩次。