我在 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 安装指南,它正在将新用户指向apt
或aptitude
。我认为现在所有示例命令都引用apt
,而不是apt-get
.
我的起始假设是安全Debian 安全手册认可的更新方法不会阻止对内核的更新。 (如果我假设错误,请告诉我:-)。但我想确保我了解如何更新我的 Debian 系统。
问题
- 如果我想获得现代 Debian 为新用户设置的默认设置,建议我训练手指打字
apt
而不是apt-get
.正确的? - 之前的安装指南(针对 Debian 8)参考了
apt-get
,以及从 Debian 8 升级到 Debian 9 的文档。所以从广义上讲,我想最安全的选择是apt
在 Debian 8 -> Debian 9 过渡之前不要使用? - 您是否建议我注意一个或多个广为人知的案例,其中当前的解决方案用于
apt-get
某些任务? - Debian 是否有关于选择
apt
更渴望应用更新的评论,特别确认安全更新和非安全更新之间存在区别? apt-get
从稍微不同的角度来看,是否有任何关于 Debian 选择安排这样的(非安全)内核更新的信息,以避免它们与我的系统上使用的正常配置一起应用?
本次更新详情
# 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.
答案1
首先,我将首先解释您所看到的行为。默认情况下,非常保守,仅apt-get
在运行时不会安装新软件包(这可以通过选项更改)。另一方面将(默认情况下启用该选项),就像将(无论如何都有不同的分辨率算法)一样。由于内核经历了 ABI 碰撞,升级它需要安装新的软件包......upgrade
dist-upgrade
--with-new-pkgs
apt
APT::Get::Upgrade-Allow-New
aptitude
另请注意,严格来说,您获得此内核更新并不是作为安全修复,而是作为上周末 9.5 点版本的一部分。不过,这不在这里也不在那里,因为优先级是相同的。 (你已经知道了这一点,我向其他读者提到过这一点。)内核的安全更新可能涉及 ABI 碰撞,因此安全更新以及点发布更新都可能会出现这种情况;就 Debian 中的内核包而言,这种区别主要是机会和时机的区别,因为无论如何,所有内核更新都是安全更新。
现在回答您的问题:
apt
现在是推荐的APT前端,是的,至少对于交互使用来说;它应该具有用户友好的默认值(与 相比apt-get
)。这两种工具都使用相同的算法,并且apt-get
可以配置为如下行为apt
:运行apt-config dump | grep Binary::apt
查看具体设置apt
启用。如果您愿意,aptitude
也可以继续使用它。据我所知,在 Debian 8 中,
apt
它完全等同于apt-get
,所以你也可以使用它;apt
经过开发人员的努力,Debian 9 成为了最有用的面向用户的工具。Debian 常见问题解答建议使用Debian 8 (Jessie)apt
代替apt-get
并apt-cache
从 Debian 8 (Jessie) 开始。 (我看到它的描述apt update
略有错误。)目前的建议是避免
apt
在脚本中使用,因为其界面可能会发生变化。除此之外,不应该有任何场景让您需要apt-get
而不是apt
。apt
不区分安全更新和非安全更新,除非您将其配置为这样做。我不确定这是一个有意识的决定...最后一次更新保护 Debian 手册比 Debian 9 旧很多。请注意,使用时
apt-get
,Debian 常见问题解答指apt-get dist-upgrade
保持 Debian 系统最新。该常见问题解答也早于 Debian 9,但最近更新了。