自動更新程式:需要安裝不受信任的軟體包

自動更新程式:需要安裝不受信任的軟體包

在最近一周左右的時間裡,當我讓自動更新程式從 UI 運行時,我收到了上述訊息。消息接著說:「這需要從未經身份驗證的來源安裝軟體包」。我讀到建議這樣做apt-upgrade。但我沒有找到任何解釋為什麼這是預期的解決方案。

我想了解自動更新版本的過程,以了解為什麼它現在需要apt-upgrade,然後再以這種方式接觸我原本非常穩定的系統。我不記得過去幾年我的系統有任何更新需要這樣做。

Ubuntu 14.04 LTS。

謝謝!

答案1

要理解為什麼會發生這種情況,首先應該了解 stock apt(即沒有設定任何優先順序的 apt)是如何運作的。假設您想使用 apt-upgrade 運行升級apt upgrade(我假設這就是您所說的 apt-upgrade 的意思,因為我找不到任何有關 apt-upgrade 的信息apt-upgrade):首先,apt 將檢查存儲庫中所有已安裝軟體的本地版本以及遠端版本,然後看看是否需要升級軟體包。為了進行演示,我們創建一個假設場景,其中 1 個套件sayhello需要升級。

這是一個虛構的變更日誌:

sayhello 1.1 now depends on libhello (>= 1.0) to print "hello."

現在假設您的sources.list 中列出了兩個來源,一個是庫存Ubuntu 儲存庫,另一個是Jim's amazing taco repo.

Jim 的儲存庫包含以下 3 個套件:

jimplayer 2.5 (No depends)
jimsbetterhello 1.0 (Depends on libhello (>= 2.0))
libhello 2.0 (No depends)

您不久前才使用此儲存庫來安裝 jimplayer,但後來 Jim 似乎決定將 jimsbetterhello 新增到儲存庫中。現在事情變得有趣了...

出於相容性原因,Ubuntu 的儲存庫仍然使用 libhello 1.5(因為某些軟體包尚無法在新的 libhello 版本上運行)

現在,當 apt 升級時sayhello,它遇到了一個難題。有2個版本libhello可以安裝!應該選擇哪一個呢?好吧,預設情況下 apt 會選擇最新版本的軟體包,doesn't conflict with other currently installed packages.現在,通常這個過程對用戶來說是透明的,但是如果您沒有為第三方存儲庫添加GPG 密鑰,或者密鑰已更改或其他一些事情,即使您是sayhello從預設的 Ubuntu 儲存庫安裝的,libhello 2.0 也將是一個不受信任的軟體包,並且 apt 會警告您這一點。這只是 apt 警告您這一點的眾多不同排列之一。這也可能是由於缺少僅在您新增的第三方儲存庫中可用的軟體包。最好的解決方法是將預設儲存庫設定為更高的優先級,並刪除任何不必要的第三方儲存庫,而不將其金鑰新增至受信任的鑰匙圈中。

相關內容