
我一直在嘗試抑制有關修改的設定檔和衝突的互動式對話框。我把搜尋結果都翻遍了,大家不停地複製貼上相同的確切答案無需提供額外的上下文。
我已經找到了解決方案,將一個配置文件放入其中,/etc/apt/apt.conf.d
其中包含複製貼上好的項目:
Dpkg::Options {
"--force-confdef";
"--force-confold";
}
我已經包括了APT::Get::Assume-Yes "true";
和這絕對有效。我已apt-config
確認Dpkg::Options
是正在加載。但每次我嘗試DEBIAN_FRONTEND=noninteractive sudo apt upgrade
使用此配置時,互動式對話方塊都會停止我的自動化腳本。
有人可以提供比copypasta更多的資訊來解釋為什麼這個配置失敗嗎?為什麼這些設定會被忽略?
重現我的困境:
- 在 Lightsail 上建立新的 Ubuntu 20.04 實例
- 新增
/etc/apt/apt.conf.d/99confold
包含上述設定的內容 /etc/cloud/cloud.cfg
以某種方式修改sudo apt update
然後sudo apt upgrade
在更新結束時,衝突對話方塊仍然出現。
答案1
您在 /etc/apt/apt.conf.d 檔案中指定的 Dpkg::Options 設定可能會被忽略,原因如下:
您使用的 apt 版本可能不支援 Dpkg::Options 設定。 Dpkg::Options 設定是在 apt 版本 1.1.0 中引入的,因此如果您使用的是舊版本,此設定將被忽略。
Dpkg::Options 設定可能會被另一個設定檔中的設定覆蓋。 apt 從多個位置讀取配置文件,並且後面文件中的設定可以覆蓋前面的文件。例如,如果您有一個檔案 /etc/apt/apt.conf.d/99force-confold 包含行 Dpkg::Options {"--force-confnew"};,則此設定將覆蓋 --force- confold 您在先前的設定檔中指定的設定。
Dpkg::Options 設定可能不適用於您正在執行的特定套件或操作。 Dpkg::Options 設定會影響 dpkg 在安裝或升級套件時處理設定檔的方式,但它可能不適用於其他操作,例如刪除套件或更新套件快取。
如果您使用的是最新版本的 apt 且 Dpkg::Options 設定沒有被其他設定檔覆蓋,則 --force-confold 選項可能不適用於您嘗試執行的操作。您可以嘗試指定 --force-confdef 選項,這會強制 dpkg 使用任何已修改設定檔的預設版本。
另外值得注意的是,DEBIAN_FRONTEND=noninteractive 設定在使用 apt 時不會抑制所有互動式提示。它僅抑制與 debconf 系統特別相關的提示,該系統用於在安裝某些軟體包期間提出問題並設定配置選項。如果您看到與 debconf 無關的互動式提示,則此設定不會抑制它。