為什麼 Dpkg::Options --force-confold 會被忽略?

為什麼 Dpkg::Options --force-confold 會被忽略?

我一直在嘗試抑制有關修改的設定檔和衝突的互動式對話框。我把搜尋結果都翻遍了,大家不停地複製貼上相同的確切答案無需提供額外的上下文。

我已經找到了解決方案,將一個配置文件放入其中,/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更多的資訊來解釋為什麼這個配置失敗嗎?為什麼這些設定會被忽略?


重現我的困境:

  1. 在 Lightsail 上建立新的 Ubuntu 20.04 實例
  2. 新增/etc/apt/apt.conf.d/99confold包含上述設定的內容
  3. /etc/cloud/cloud.cfg以某種方式修改
  4. 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 無關的互動式提示,則此設定不會抑制它。

相關內容