在问题中什么是“dist-upgrade”,为什么它比“upgrade”升级得更多?这接受的答案解释称,这linux-headers-3.0.0-13
是一个取代的新方案linux-headers-3.0.0-12
。
它怎么是一个新的包而不是简单的一个新版本?如何知道(识别)其中的区别?
此外,如果它是一个新包而不是已安装包的新版本,为什么会linux-headers-3.0.0-13
在命令的输出中列出它?sudo apt-get upgrade
答案暗示了这样的论点:这是因为linux-headers-3.0.0-12
和linux-headers-3.0.0-13
连接至相同的虚拟包(“是由和linux-headers
提供的虚拟包”)。列出的原因是否是这个?如果是这样,为什么我们没有看到其他虚拟包提供的其他包被建议作为升级?linux-headers-3.0.0-12
linux-headers-3.0.0-13
linux-headers-3.0.0-13
编辑:
虽然上面的例子涉及内核包,但我的问题不是面向内核的,而是比较普遍的;或者它只与内核有关?
答案1
linux-image-generic
拥有类似内核元包并指向真实内核包的原因linux-headers-generic
是为了允许拥有多个内核实例。
您可以同时拥有linux-headers-3.0.0-13-generic
和安装。linux-headers-3.0.0-12-generic
当您升级 meta 时linux-headers-generic
,它会将最新的实际包作为依赖项提取。如果我们将这些内核包作为一个具有不同版本的包,它将始终被替换。
apt-get upgrade
不安装新软件包
upgrade
upgrade is used to install the newest versions of all packages
currently installed on the system from the sources enumerated in
/etc/apt/sources.list. Packages currently installed with new
versions available are retrieved and upgraded; under no
circumstances are currently installed packages removed, or packages
not already installed retrieved and installed. New versions of
currently installed packages that cannot be upgraded without
changing the install status of another package will be left at
their current version. An update must be performed first so that
apt-get knows that new versions of packages are available.
这就是为什么它不升级依赖于新包的元包。
它与内核无关。还有一些其他示例。
答案2
它怎么是一个新的包而不是简单的一个新版本?如何知道(识别)其中的区别?
不同的软件包有不同的名称。同一软件包的不同版本具有相同的软件包名称和不同的版本号。您可以使用以下命令查看已安装的软件包及其版本号:例如,apt list --installed
:
firas@itsuki ~ % apt list --installed | grep linux-image
linux-image-4.18.0-14-generic/cosmic-updates,cosmic-security,now 4.18.0-14.15 amd64 [installed,automatic]
linux-image-4.18.0-15-generic/cosmic-updates,cosmic-security,now 4.18.0-15.16 amd64 [installed,automatic]
linux-image-generic/cosmic-updates,cosmic-security,now 4.18.0.15.16 amd64 [installed,automatic]
这里我安装了三个包,它们的名字包含linux-image
:linux-image-4.18.0-14-generic
version 4.18.0-14.15
、linux-image-4.18.0-15-generic
version4.18.0-15.16
和linux-image-generic
version 4.18.0.15.16
。特别是,linux-image-4.18.0-14-generic
和linux-image-4.18.0-15-generic
是不同的名称,所以它们是不同的包。不要被名字的相似性所迷惑,关键是它们并不相同。它们不妨被命名为foo
和bar
。
此外,在包的文件名中.deb
,包名称和版本号通常用下划线分隔:
firas@itsuki ~ % ls /home/apt/archives/linux-image-*
/home/apt/archives/linux-image-4.18.0-14-generic_4.18.0-14.15_amd64.deb
/home/apt/archives/linux-image-4.18.0-15-generic_4.18.0-15.16_amd64.deb
/home/apt/archives/linux-image-generic_4.18.0.15.16_amd64.deb