什么是分阶段更新?为什么 Ubuntu 使用它们?

Arr*_*lt3 60 updates apt

因此,我在使用apt. 经过一番研究,这似乎是“分阶段更新”的结果。

  • 到底什么是分阶段更新?
  • 为什么 Ubuntu 使用它们?
  • 它们对我有什么好处?
  • 我可以(并且应该)关闭它们或解决它们吗?
  • 为什么apt有关分阶段更新的消息如此不清楚?

Arr*_*lt3 83

什么是分阶段更新?

分阶段更新是逐步向用户推出的软件更新,而不是所有用户同时获取更新。在不使用分阶段更新的更新系统中,一旦更新可用,所有用户都会立即获得更新。当使用分阶段更新时,只有部分用户会在更新首次发布时获得更新。随着时间的推移,越来越多的用户获得更新,直到更新最终“完全分阶段”,每个人都可以获得更新。

自 Ubuntu 13.04(差不多十年前!)以来,Ubuntu 一直在为 Ubuntu 桌面使用分阶段更新系统,但是,到目前为止,只有 Ubuntu 的 GUI 更新程序能够处理分阶段更新。通过更新apt将忽略更新阶段。不过,从 Ubuntu 21.04 开始,apt也采用了分阶段更新,允许分阶段更新适用于所有版本的 Ubuntu,包括 Ubuntu Server 和在容器中运行的 Ubuntu。顺便说一句,这一更改还导致许多系统更新期间出现现在臭名昭著的“以下软件包已被保留”消息apt。虽然apt自 Ubuntu 21.04 以来就已经出现了分阶段更新,但它们在 Ubuntu 22.04 LTS 中表现得最为明显。

为什么 Ubuntu 使用它们?

有时,就像其他人一样,Ubuntu 开发人员也会犯错误。虽然更新在发布之前进行了测试,但有时未正确考虑意外的极端情况。如果这些意外的极端情况变得有些常见,它们可能会开始导致用户的系统出现问题。

过去,在Apt使用分阶段更新之前,每当推出更新时,所有Ubuntu用户都可以立即安装更新。如果这个更新碰巧不稳定,它可能会同时搞乱很多人的系统。分阶段的更新使得,如果更新有问题,可以在每个人都获得更新之前尽早发现。一旦更新推出,一些用户会比其他用户更快获得更新。如果这些用户的系统开始报告崩溃(或者发现软件包存在严重问题),则可以停止分阶段过程,从而默认停止向用户发送更新。这提高了Ubuntu的安全性和稳定性。

分阶段系统可以选择不同的用户组作为第一个获得更新的用户,这样就不会有一组不幸的人总是在发布后很快就获得更新。

它们对我有什么好处?

如果您过去曾遇到过更新破坏系统的情况,那么您将来应该不会再遇到该问题。分阶段更新使得更有可能尽早检测到损坏,从而避免对用户的桌面、服务器和其他 Ubuntu 支持的设备造成问题。这通过提高 Ubuntu 的稳定性和可靠性直接使 Ubuntu 用户受益。

我可以(并且应该)关闭它们或解决它们吗?

这取决于您需要系统的稳定性。如果您只是想避免在apt更新期间收到有关软件包被阻止的任何通知,并且您愿意成为第一批在发布更新时获得更新的人之一,则可以关闭分阶段更新。这是有一定风险的,因为这意味着如果更新不好,您几乎总是一个获得更新的人(本质上您是在让自己成为早期更新版本的小白鼠!)。但它将消除有关保留包裹的通知apt

如果这听起来像是一个坏主意,请保持分阶段更新。

通过运行apt install保留包来解决分阶段更新可能总是一个坏主意 - 它不会永久“修复”保留包通知(实际上不需要首先修复),并且它会使你早点安装软件包。如果您已经这样做了,它可能不会弄乱您的系统(除非更新出现问题),但您可能不想养成这样做的习惯。

如果您绝对确定要禁用分阶段更新,则可以通过在 中创建一个/etc/apt/apt.conf.d包含以下行的文件来更改 apt 的配置:

Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates;
Run Code Online (Sandbox Code Playgroud)

99-Phased-Updates如果该文件/etc/apt/apt.conf.d/99-Phased-Updates尚不存在,您可以为其命名。同样,只有当您确实知道自己在做什么并且绝对确定需要这样做时才执行此操作(例如,如果您有意安装所有最新的软件包,因为您想帮助测试它们并且如果您的系统可以负担得起)休息)。如果您出于本示例之外的几乎任何其他原因这样做,则可能有更好的方法。

为什么apt有关分阶段更新的消息如此不清楚?

实际上,要认识到分阶段更新被阻止是有点困难的apt,因为它们是分阶段更新,这是由于依赖关系的工作方式所致。然而,我们确实认识到这是一个恼人的问题,并且已经在我们的关注范围内。这里有一个关于它的错误报告: https: //bugs.launchpad.net/ubuntu/+source/apt/+bug/1988819如果您有 Ubuntu SSO 帐户并且可以登录 Launchpad,您可以单击“此错误”影响 X 个人。这个 bug 对你有影响吗?” 链接靠近页面顶部,然后单击“是的,它影响了我”以提高错误热度,使其更加显着。

(注意:不要在错误报告的底部留下刻薄和令人讨厌的评论 - 它所做的只是让我们烦恼或不安,实际上并不会促使我们更快地修复错误。)

  • 优秀而全面的答案。“运行 apt install 来解决这个问题”:这样做的一个令人讨厌的副作用是,您将这些软件包标记为“手动安装”,因此如果卸载了所有需要它们的软件包,它们永远不会被自动删除。 (12认同)
  • 我认为安全更新永远不会分阶段进行? (3认同)

Pie*_*erz 6

另外值得补充的是,正如apt-preferences文档中所解释的,分阶段更新取决于每台机器的Machine ID ,它可能在/etc/中找到(并且可能被更改/复制 - 但通常应该避免更改它,如@Daniel所述)机器 ID。因此,如果两台机器具有相同的机器 ID,它们就处于相同的“阶段”并获得相同的更新。