Apt, packages kept back: why and how to resolve it?

gabriele97@lemmy.g97.top to Linux@lemmy.ml – 37 points –

cross-posted from: https://lemmy.g97.top/post/56902

Hi, I've this situation when I apt upgrade. There are many pipewire-related packages kept back. Why? How can I solve it?

Thank you!

EDIT: dist-upgrade summary

EDIT2: Ok I solved it with

apt autoremove # only to remove old packages. it didn't solved the problem

apt update

apt dist-upgrade

31

Look into the difference between upgrade and dist-upgrade: https://tecadmin.net/difference-between-apt-upgrade-vs-apt-dist-upgrade/

Yep, I see this problem every time I upgrade full versions. Always finish off your upgrades with a dist-upgrade and the packages will get cleared up.

Thank you, I updated the post with a summary of the dist-upgrade command

Looks like some incompatibility with the Nvidia drivers is hold some packages back.

You say that because they are listed as removable? If so because I updated from 515 to 525 months ago and today from 525 to 535. I think they are still there but are not used anymore and are safe

You're totally right, I had glanced too quickly and thought they were "removed"

Is this basically Ubuntu?

They do intentionally hold back packages based on a random value to do gradual rollouts. See below:

https://askubuntu.com/questions/1431940/what-are-phased-updates-and-why-does-ubuntu-use-them

Could this be your issue?

Sorry, I forgot to mention that it's Pop OS. And I think it started to be stuck in this mode 2 weeks ago

PopOS is based on Ubuntu, so the Phased Updates answer above most likely explains what you're seeing.

If you want to force the immediate upgrading of a given package that is being delayed by phased updates, you can apt install it. (However, note that this will also mark the package as manually installed if it wasn't already, which means that if you later remove everything else that depended on it, it won't join the list of "no longer needed" packages which get removed by apt autoremove).

Typically updates that are being phased should be relatively unimportant, but if you want to know what you're missing you can also say apt changelog and apt policy (supplying a package name as an argument) to find out what has changed.

imo phased updates make sense, but ubuntu's current implementation of them is terribly confusing for commandline users who aren't aware of them.

edit: actually according to this and this PopOS disabled phased updates in their focal (20.04) branch back in March. Maybe they've come back in jammy (22.04)? Or maybe you actually have some other conflict causing packages to be held back.

edit2: I see ubuntu lists all of their currently phased updates here and there are far fewer of them currently so this actually does not explain what is in your screenshot. I would guess that you perhaps have installed some non-standard package that conflicts with the pipewire upgrades; perhaps you can find out what it is by saying apt install pipewire-bin and seeing if it asks to remove something in order to upgrade that.

The Ubuntu based distros may have this phased update thing. That AskUbuntu link has a command to override APT package manager to install the held-back packages.

Ubuntu tends to hold back system critical packages in case there are issues. Systems with certain install UUIDs will be 'guinea pigs' and install these packages before everyone else. You can override this behavior and disable phased updates on that particular computer.

see my edits to my previous reply, in case you got the notification about it prior to me editing it.

It means that updating a package would possibly break or require something to be uninstalled. If you wait, those packages will update once whatever dependency is preventing the update receives its update.

apt dist-upgrade will sometimes resolve this.

Thank you, I updated the post with a summary of the dist-upgrade command

So it looks like your old linux headers are causing dependency issues that are preventing upgrades. The dist-upgrade will delete the conflicting packages and update the dependencies. You should be good after that.

You could also try aptitude upgrade instead of apt-get. It tends to handle packages that are kept back better.

not sure about apt, but with apt-get the default behavior for upgrade is to hold back packages with new dependencies that are not currently installed. in that case, running sudo apt-get upgrade --with-new-pkgs should get those packages upgraded as well, assuming that dependency conflicts aren't a factor, too

Maybe some other packages might have problems with the newer versions. Or it could be one package being kept back due to such reasons and others are its dependencies which also gets kept back to make sure it does not break.

nVidia drivers are a serious pain. You could brick your system if you aren't careful.

Brick is a big word. Nothing that can't be fix by booting a rescue image and chrooting into your OS.

you can always run: rmmod nvidia and rmod nouveau. And then buy an AMD videocard. This works always! Thank me later!

You say that because they are listed as removable? If so because I updated from 515 to 525 months ago and today from 525 to 535. I think they are still there but are not used anymore and are safe

At most I think you'd have to blacklist the module from loading at boot time.