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

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

因此,我在使用 更新系统时遇到了奇怪的“软件包被阻止”问题apt。经过一番研究,它似乎是“分阶段更新”的结果。

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

答案1

什么是分阶段更新?

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

自 Ubuntu 13.04(近十年前!)以来,Ubuntu 一直在使用 Ubuntu Desktop 的分阶段更新系统,但是,到目前为止,只有 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可能始终是一个坏主意 - 它不会永久地“修复”保留的软件包通知(实际上首先不需要修复),它会让您提前安装软件包。如果您已经这样做了,它可能不会弄乱您的系统(除非更新有问题),但您可能不想养成这样做的习惯。

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

Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates;

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,您可以点击页面顶部附近的“这个 bug 影响了 X 个人。这个 bug 是否影响到了您?”链接,然后点击“是的,它影响到了我”来提高 bug 热度等级,让它变得更加重要。

(笔记:不要在错误报告的底部留下刻薄和恶意的评论 - 它只会让我们感到恼火或不安,并且实际上不会促使我们更快地修复错误。)

答案2

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

相关内容