新包装还是新版本?

新包装还是新版本?

在问题中什么是“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-12linux-headers-3.0.0-13连接至相同的虚拟包(“是由和linux-headers提供的虚拟包”)。列出的原因是否是这个?如果是这样,为什么我们没有看到其他虚拟包提供的其他包被建议作为升级?linux-headers-3.0.0-12linux-headers-3.0.0-13linux-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-imagelinux-image-4.18.0-14-genericversion 4.18.0-14.15linux-image-4.18.0-15-genericversion4.18.0-15.16linux-image-genericversion 4.18.0.15.16。特别是,linux-image-4.18.0-14-genericlinux-image-4.18.0-15-generic是不同的名称,所以它们是不同的包。不要被名字的相似性所迷惑,关键是它们并不相同。它们不妨被命名为foobar

此外,在包的文件名中.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

相关内容