Debian

apt-get upgrade 阻止核心更新。在 Debian 9 上應用更新的官方說明是什麼?

  • May 14, 2020

我在 Debian 9 “stretch” 上看到了以下內容:

# apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
 linux-image-marvell
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

儘管此命令是根據“保護 Debian 手冊”更新 Debian 的官方方式,但不會安裝更新。(在此處閱讀時的快照)。

相比之下,兩者aptitude和較新的apt命令都準備安裝它。也就是說,這個特定版本不是安全更新。我理解這一點,apt並且可能aptitude有不同的預設值。我想問一下 Debian 的這種行為是如何刻意的……

aptitude在描述如何應用更新時,安全 Debian 手冊首先列出。而且我知道apt有一些更改的預設值應該更加使用者友好。仔細查看目前的 Debian 安裝指南,它將新使用者指向aptaptitude. 我認為所有範例命令現在都引用apt,而不是apt-get.

我最初的假設是核心的安全更新不會被 Debian 安全手冊認可的更新方法阻止。(如果我假設錯誤,請告訴我:-)。但我想確保我了解如何更新我的 Debian 系統。

問題

  1. 如果我想獲得現代 Debian 為新使用者設置的預設值,建議我訓練我的手指打字apt而不是apt-get. 對?
  2. 以前的安裝指南(適用於 Debian 8)參考apt-get,以及從 Debian 8 升級到 Debian 9 的文件。所以非常廣泛,我想最安全的選擇是apt在 Debian 8 -> Debian 9 過渡之前不要使用?
  3. 是否有一個或多個廣為人知的案例需要我提防,目前的解決方案將apt-get用於某些任務?
  4. Debian 是否在某處對選擇apt更渴望應用更新有評論,這特別證實了安全更新和非安全更新的區別?
  5. 從稍微不同的角度來看,是否有任何關於 Debian 選擇安排這樣的(非安全)核心更新的資訊,以避免它們被應用apt-get到我係統上使用的正常配置中?

本次更新詳情

# apt-cache policy linux-image-marvell
linux-image-marvell:
 Installed: 4.9+80+deb9u4                                             
 Candidate: 4.9+80+deb9u5      
 Version table:                     
    4.9+80+deb9u5 500
       500 http://ftp.uk.debian.org/debian stretch/main armel Packages
*** 4.9+80+deb9u4 500
       500 http://security.debian.org stretch/updates/main armel Packages
       100 /var/lib/dpkg/status

使用的“apt-get”版本

# apt-cache policy apt
apt:
 Installed: 1.4.8
 Candidate: 1.4.8
...

不同更新方法的不同行為

# aptitude upgrade
Resolving dependencies...                
The following NEW packages will be installed:
 linux-image-4.9.0-7-marvell{a}
The following packages will be upgraded:
 linux-image-marvell
1 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/21.9 MB of archives. After unpacking 91.2 MB will be used.
Do you want to continue? [Y/n/?] n
Abort.

# apt upgrade
Reading package lists... Done
Building dependency tree        
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
 linux-image-4.9.0-7-marvell
The following packages will be upgraded:
 linux-image-marvell
1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/21.9 MB of archives.
After this operation, 91.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.

首先,我將首先解釋您所看到的行為。預設情況下,apt-get非常保守,執行時不會安裝新包upgrade,僅dist-upgrade(可以通過--with-new-pkgs選項更改)。apt另一方面將(它APT::Get::Upgrade-Allow-New預設啟用該選項),也將aptitude(無論如何都有不同的解析度算法)。由於核心經歷了 ABI 碰撞,因此升級它涉及安裝一個新包……

另請注意,嚴格來說,您不會將此核心更新作為安全修復程序,而是作為上週末 9.5 點版本的一部分。這既不是這裡也不是那裡,因為優先級是相同的。(您已經意識到這一點,我向其他讀者提到這一點。)核心的安全更新可能涉及 ABI 顛簸,因此這種情況可能與安全更新以及點發布更新一起出現;就 Debian 中的核心軟體包而言,區別主要是機會和時機之一,因為無論如何所有核心更新都是安全更新。

現在回答你的問題:

  1. apt現在是推薦的 APT 前端,是的,至少用於互動使用;它應該具有使用者友好的預設值(與 相比apt-get)。兩種工具都使用相同的算法,並且apt-get可以配置為類似apt; 執行查看啟用apt-config dump | grep Binary::apt的具體設置。apt如果您願意aptitude,也可以繼續使用它。
  2. 據我所知,在 Debian 8 中,apt它完全等同於apt-get,所以你也可以使用它;aptDebian 9 在其開發人員的工作中脫穎而出,使其作為面向使用者的工具更加有用。Debian 常見問題解答建議使用Debian 8 (Jessie)apt代替apt-getapt-cache從 Debian 8 (Jessie) 開始。(我看到它的描述apt update有點錯誤。)
  3. 目前的建議是避免apt在腳本中使用,因為它的界面可能會改變。除此之外,不應該有任何你需要 apt-get而不是apt.
  4. apt不區分安全更新和非安全更新,除非您將其配置為這樣做。
  5. 我不確定這是一個有意識的決定… Securing Debian Manual的最後一次更新比 Debian 9 早了很多。請注意,當使用 時apt-getDebian FAQ指的是apt-get dist-upgrade保持 Debian 系統是最新的. FAQ 也早於 Debian 9,但最近更新了。

引用自:https://unix.stackexchange.com/questions/457306