62

So I ran into that weird "packages being held back" problem while updating my system using apt. After some research, it appears to be the result of "phased updates".

  • What are phased updates, anyway?
  • Why does Ubuntu use them?
  • How do they benefit me?
  • Can I (and should I) turn them off or work around them?
  • Why are apt's messages regarding phased updates so unclear?
0

2 Answers 2

85
+100

What are phased updates?

Phased updates are software updates that are gradually rolled out to users rather than all users getting the updates at the same time. In an update system that doesn't use phased updates, all users are immediately offered an update as soon as it is made available. When phased updates are used, only some users get an update when it is first released. As time passes, more and more users get the update, until the update is finally "fully phased" and everyone is offered the update.

Ubuntu has been using a phased update system for Ubuntu Desktop since Ubuntu 13.04 (almost ten years ago!), however, up until now, only the GUI updater for Ubuntu was able to handle phased updates. Updating via apt would ignore update phasing. However, starting with Ubuntu 21.04, apt also uses phased updates, allowing phased updates to apply to all versions of Ubuntu, including Ubuntu Server and Ubuntu running in containers. Incidentally, this change also resulted in the now-infamous "The following packages have been kept back" message from apt during many system updates. While phased updates in apt have been a thing since Ubuntu 21.04, they have come to light most clearly in Ubuntu 22.04 LTS.

Why does Ubuntu use them?

Occasionally, just like anyone else, Ubuntu developers make mistakes. While updates are tested before they are released, sometimes unexpected corner cases aren't properly taken into account. And if those unexpected corner cases turn out to be somewhat common, they can start causing users problems on their systems.

In the past, before phased updates were used with Apt, any time an update was pushed out, all Ubuntu users would immediately be able to install the update. And if that update happened to be wonky, it could mess up a lot of people's systems all at once. Phased updates make it so that, in the event an update is bad, it gets caught early before everyone gets the update. Once an update is pushed out, some users get it sooner than others. And if those users' systems start reporting back crashes (or if severe problems with a package come to light), the phasing process can be stopped, making it so that the update stops being sent to users by default. This improves the safety and stability of Ubuntu.

The phasing system makes it so that different sets of users are chosen to be the first to get the updates so that there isn't one group of unlucky people who always get the updates soon after release.

How do they benefit me?

If you've encountered times when an update broke your system in the past, you shouldn't be as likely to experience that problem in the future. Update phasing makes it so that breakage is more likely to be detected early on, avoiding causing problems to users' desktops, servers, and other Ubuntu-powered devices. This directly benefits Ubuntu users by increasing the stability and reliability of Ubuntu.

Can I (and should I) turn them off or work around them?

That depends on how stable you need your system to be. If you just want to avoid any notices about packages being held back during apt updates, and you're willing to be one of the first people to get updates whenever they're released, you can turn off phased updates. This is somewhat of a risk since it means if an update is bad, you will pretty much always be the first person to get the update (essentially you're making yourself a guinea pig for the early update releases!). But it will get rid of the notices about held-back packages in apt.

If that sounds like a bad idea, leave phased updates on.

Working around phased updates by running apt install on held-back packages is probably always a bad idea - it won't permanently "fix" the held-back package notice (which doesn't actually need fixing in the first place), and it will make you install packages early. If you've already done it, it probably won't mess up your system (unless the update has a problem), but it's likely not something you want to make a habit of doing.

If you are absolutely sure that you want to disable phased updates, you can change apt's configuration by creating a file in /etc/apt/apt.conf.d, containing the following lines:

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

You can name the file 99-Phased-Updates if /etc/apt/apt.conf.d/99-Phased-Updates doesn't already exist. Again, only do this if you really know what you're doing and are absolutely sure you need to do this (for instance, if you intentionally are installing all the latest packages since you want to help test them and can afford it if your system breaks). If you're doing this for almost any other reason than this example, there's probably a better way.

Why are apt's messages regarding phased updates so unclear?

It's actually somewhat difficult to get apt to recognize phased updates as being held back because they're phased updates, due to how dependencies work. However, we do recognize that this is an annoying problem, and it's on our radar. There's a bug report about it here: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1988819 If you have an Ubuntu SSO account and can log into Launchpad, you can click on the "This bug affects X people. Does this bug affect you?" link near the top of the page, and then click "Yes, it affects me" to increase the bug heat rating, making it more significant.

(Note: Please don't leave mean and nasty comments at the bottom of the bug report - all it does is make us annoyed or upset and doesn't actually push us to fix the bug any faster.)

16
  • 13
    Excellent and comprehensive answer. "running apt install to work around": a nasty side effect of doing this is that you are marking these packages as "manually installed" so they never will be automatically removed if all packages that need them are uninstalled.
    – vanadium
    Sep 23, 2022 at 16:39
  • 1
    Great answer. I would add that you can also "turn off phased updates" by telling apt to never install updates that are being phased, which might keep your system slightly more stable, but if everyone did it then it would defeat the purpose of phased updates. (askubuntu.com/a/1246984) Sep 24, 2022 at 7:32
  • 1
    I'm a bit surprised--was controlling server load not a concern? If updates are released to everyone all at once, you'd expect the servers providing the updates would essentially get DDoSed by millions of users and auto-update systems updating all at once.
    – Hearth
    Sep 24, 2022 at 19:37
  • 4
    I assume security updates are never phased?
    – OrangeDog
    Sep 25, 2022 at 10:33
  • 2
    @OrangeDog True.
    – ArrayBolt3
    Sep 25, 2022 at 10:33
6

Also worth adding, as explained in the apt-preferences docs, that Phased Updates depend upon each machine's Machine ID, which maybe found (and potentially altered/copied - but generally one should avoid changing it as mentioned by @Daniel) in /etc/machine-id. So if two machines have the same machine-id they're at the same "Phase" and get the same updates.

1
  • This is a bad idea. Your link said "anything that was recording machine-specific state with the hostname as unique identifier will no longer be able to associate the machine-specific state with the machine, effectively resulting in data loss. It is documented that every machine should have an unique machine-id, and strange things may happen when multiple machines with the same machine-id operate simultaneously."
    – Daniel T
    Feb 7 at 3:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .