Mirror Pruning

My understanding of the CentOS Stream repositories is that they are supposed to be version limited as maintaining every build would be… unrealistic to put it mildly. To my knowledge, that number is supposed to be five versions, and it looks like c9s does follow this policy. However, c8s appears to be missing some attention on this topic, and I’m guessing automation either doesn’t exist for this branch yet or has had a regression.

For some statistics, I’m mirroring AppStream, BaseOS, and CRB for both c8s and c9s, and exclusively the x86_64 architecture. The following is an example of my rsync includes (originally made for EL rebuilds):

+ BaseOS
+ BaseOS/x86_64
+ BaseOS/x86_64/kickstart
+ BaseOS/x86_64/kickstart/.treeinfo
+ BaseOS/x86_64/kickstart/EFI/***
+ BaseOS/x86_64/kickstart/Packages/***
+ BaseOS/x86_64/kickstart/images/***
+ BaseOS/x86_64/kickstart/repodata/***
+ BaseOS/x86_64/os
+ BaseOS/x86_64/os/Packages/***
+ BaseOS/x86_64/os/repodata/***

This results in the following mirror sizes as of today (du -sh ./* directly on the share host):

143G	./c8s
 74G	./c9s

Going into the repositories themselves, there are many packages that have well over five versions provided. Though there’s only a year remaining of its life, it might be a good idea for c8s to be added to the automatic pruning or have its configuration corrected.


The “keep 5 builds” policy is more of a reasonable expectation than a hard rule but there may be a few reasons for the size difference between Stream 8 and Stream 9.

Example: modules aren’t pruned at all (both to maintain upgrade path, and because the component RPMs can be re-used across many module streams).

I’m not sure if there are realistically any changes to make here, but I’ll leave that up to the team to decide. If you feel strongly about reducing the size of the Stream 8 repos, please open a Distribution bugzilla.

I’m pretty sure I can handle the storage for a local-never-pruned copy. I just wasn’t expecting to see as much of a difference between c8s and c9s, where one seemed to be adhering much more strictly to that policy than the other. An example of this would be the kernel and glibc packages in c8s.


Modular streams can refer to far more then 5 releases of a package.
I was bitten by mirroring too few old releases and had to mirror everything for upgrades to work.