apt-get upgrade 阻止内核更新。在 Debian 9 上应用更新的官方说明是什么?

sou*_*edi 5 debian apt software-updates

我在 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.
Run Code Online (Sandbox Code Playgroud)

尽管此命令是根据“ Securing Debian Manual ”更新 Debian 的官方方式,但不会安装更新。(此处阅读时的快照)。

相比之下,两者aptitude和较新的apt命令都准备安装它。也就是说,此特定版本不是安全更新。我理解这一点,apt并且可能aptitude有不同的默认值。我想问一下 Debian 的这种行为是如何刻意的...

aptitude在描述如何应用更新时,Securing Debian Manual首先列出。而且我知道apt有一些更改的默认值应该是对用户更友好的。仔细查看当前的 Debian 安装指南,它将新用户指向apt或aptitude。我认为所有示例命令现在都引用了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
Run Code Online (Sandbox Code Playgroud)

使用的“apt-get”版本

# apt-cache policy apt
apt:
  Installed: 1.4.8
  Candidate: 1.4.8
...
Run Code Online (Sandbox Code Playgroud)

具有不同更新方法的不同行为

# 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.
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 7

首先,我将首先解释您所看到的行为。默认情况下,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,所以你也可以使用它;apt在 Debian 9 的开发人员努力使其作为面向用户的工具变得更有用之后,Debian 9 走在了前列。Debian FAQ建议使用Debian 8 (Jessie)apt代替apt-get并apt-cache开始。(我看到它的描述apt update略有错误。)

  3. 当前的建议是避免apt在脚本中使用,因为它的界面可能会发生变化。除此之外,不应该有任何您需要 apt-get而不是apt.

  4. apt 不区分安全更新和非安全更新,除非您将其配置为这样做。

  5. 我不确定这是一个有意识的决定...... Securing Debian Manual的最后一次更新比 Debian 9 早很多。请注意,在使用时apt-get,Debian FAQ指的是apt-get dist-upgrade保持 Debian 系统是最新的. FAQ 也早于 Debian 9,但最近更新。