#157 Dealing with uninstallable packages in CentOS Stream and RHEL when old packages age out
Opened 3 days ago by salimma. Modified 3 days ago

CentOS Stream (and presumably RHEL) keeps N latest builds available (I'm not sure if it's based on source packages, or binary packages; someone can clarify it in the comments perhaps).

This causes a problem for those depending on older packages, as they might end up being uninstallable, e.g.

  • we have a dependency on LLVM 15. When it ages out, no big deal, we keep copies in an internal repo
  • annobin is then updated, aging out the old annobin that depends on LLVM 15
  • our build process now fails because all the available annobin links against newer LLVM libraries and we're trying to install the old one

This is how it looks like from our end, but on the CentOS Stream side, that means - that old annobin linked against LLVM 15 was uninstallable for months before it finally ages out simply because annobin was updated less often

I can think of two ways to resolve this, but both bring their own complications - so it sounds like something the board should discuss and decide on

  • when removing a package, iterate removing packages that become uninstallable until there is nothing more to remove
  • when removing a package, if it causes another package to be uninstallable, block and require manual intervention

Since counting is a problem in computer science, option 3 - somewhere in between, allow automatic purging of uninstallable packages up to a certain threshold, and then flag for manual approval

Thoughts? For those of us that need to use older packages, it would really help if we just have to deal with removed packages all at once instead of having packages disappearing slowly over time even though they're linked to the same library removal.


More details:

RHEL keeps ALL packages.
CentOS Stream does not have that kind of disk space/resources and so it was decided that 5 was good enough. The script that does this is fairly simple. It only keeps the last 5 of each binary package.

The the code that does this is here
https://gitlab.com/redhat/centos-stream/release-engineering/releng-tools/-/blob/master/scripts/stream10_stage.sh?ref_type=heads#L51
It is repeated with slight variations around the script.

This isn't a solution to your problem, just giving you more information.

I personally, don't think this is a CentOS Board issue.

As far as I know, the board didn't choose that we should keep packages. (I wasn't on the board at the time, so if I am wrong, please let me know.)
We, the CentOS Stream team were asked if we could keep more than the latest package. We thought it was a good idea and decided that 5 should be enough without overwhelming our resources, and did it.

I really think this should be a ticket/issue for the CentOS Stream Pipeline team.

Log in to comment on this ticket.

Metadata