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?
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 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 fromapt
during many system updates. While phased updates inapt
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 inapt
.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: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.)