Ubuntu 16.04 - 内核软件包已被保留

Ubuntu 16.04 - 内核软件包已被保留

我跑了sudo apt-get upgrade,得到了这个:

The following packages have been kept back:  
linux-generic-hwe-16.04 linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04 linux-signed-generic-hwe-16.04 linux-signed-image-generic-hwe-16.04  
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.

我担心如果我运行sudo apt-get dist-upgrade某些程序可能会出错,并会弄乱我的 Ubuntu 安装。我在这里看到过类似的问题,但我认为它们与我的问题不同。我该怎么办?

答案1

如果升级现有包需要“新”包(例如尚未安装)待安装,那么该特定现有包将被“阻止”。

根据apt-get 命令upgrade默认不安装其他尚未安装的软件包:

升级

... 在任何情况下都不会删除当前安装的软件包,或者检索和安装尚未安装的软件包。

--with-new-pkgs

与升级结合使用时允许安装新软件包。如果已安装软件包的更新需要安装新的依赖项,则此功能非常有用。升级不会保留软件包,而是会升级软件包并安装新的依赖项。...

因此,--with-new-pkgs需要添加以允许包含相关的其他包。

sudo apt-get --with-new-pkgs upgrade

--with-new-pkgs允许使用 Y/n 交互式提示来安装相关的“尚未安装”的包。

此外,还有一个额外的好处,sudo apt-get --with-new-pkgs upgrade它不会产生导致软件包被标记为手动安装的副作用。


更新

Ubuntu 18.04 提供了一种更新、更简化的语法,apt可以代替使用它apt-get

sudo apt upgrade --with-new-pkgs

答案2

虽然一般主题包裹被扣留“之前在这里回答过:今天发生了一些奇怪的事情……sudo apt update几个小时前我执行时,新内核 4.8.0-42 被提供安装。我执行sudo apt dist-upgrade后,在系统(Ubuntu 16.10 工作站)重新启动后,我正在运行该新内核。

几个小时后,我想升级我的 Ubuntu 服务器安装,但没有提供新内核。为了重新检查情况,我在 Ubuntu 工作站上恢复了昨天的 clonezilla 系统备份映像,以重新检查情况。这次没有提供新内核。似乎内核 4.8.0-42 被意外推送到主存储库,并且正在被推送回建议的存储库 - 也许 Canonical 发现了一个错误。

您已选择加入HWE 堆栈Ubuntu 16.04,这意味着您使用的是 Ubuntu 16.10 的内核 4.8。因此,所有事情都首先发生在 Ubuntu 16.10 的内核上,这可能是 Ubuntu 16.04 LTS 存储库刷新过程时间延迟的原因。

当您sudo apt update稍后再次运行时,您收到的消息应该不会再出现。结论:不要运行,sudo apt dist-upgrade等到存储库更新后,有关保留的内核包的消息不再出现。顺便说一句,不久前内核版本 4.8.0-40 也发生了同样的情况。

答案3

作为一个相对较新的 Ubuntu 用户,我遇到了同样的问题,并显然解决了它。我发现 Ubuntu 软件上有三个待处理的更新,其名称与终端上列出的更新相同,如下所示:

The following packages have been kept back:
linux-generic-hwe-16.04 linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

从 Ubuntu Software 安装这些更新后,我返回终端并执行了sudo apt-get updatesudo apt-get upgrade结果:

The following packages were automatically installed and are no longer required:
  linux-headers-4.8.0-41 linux-headers-4.8.0-41-generic linux-headers-4.8.0-44 linux-headers-4.8.0-44-generic linux-image-4.8.0-41-generic
  linux-image-4.8.0-44-generic linux-image-extra-4.8.0-41-generic linux-image-extra-4.8.0-44-generic
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

虽然我不是专家,但我认为从 Ubuntu 软件安装更新似乎可以解决问题。问题似乎是 Ubuntu 软件与 apt-get 更新和升级包之间没有完全通信。我相信你会找到更好的解释,但我想与你分享这一点。

相关内容