I noticed the Ubuntu main PPA only keeps the latest version of each package. This prevents one to downgrade a package (and mark it with apt-mark hold) when there is a bug in a new version. This happened to us multiple times, and the only solution I found was to release a fixed or downgraded version of the package on our own internal PPA while waiting for the official PPA to release a fixed version.
Could we consider keeping for example one or two old version of each packages?
I work on Ubuntu, but this might also apply for other distributions.
The repository management software used by the ROS build farm, reprepro, has not historically supported maintaining multiple versions of the same package in a single repository. We did some looking a couple years ago evaluating aptly as a possible replacement which does support multiple versions but the operational properties of aptly made it unsuitable at the time. Since then a new group of maintainers for reprepro have adopted it and started working on changes to support multiple versions but we have not tested this or reviewed how well it would integrate into the ROS build farm.
Additionally, because ABI compatibility is provided on a best-effort basis by the ROS core team and only encouraged beyond that, there is no guarantee that packages from any given sync will be ABI compatible with a held package from a previous sync and even if multiple package versions were available in the main repositories it isn’t clear that mixing and matching package versions would be supported at all.
We have for the past several years provided the ROS Snapshots repositories which maintain snapshots of individual syncs for LTS distributions of ROS and ROS 2. I would recommend using the snapshots repository if you want to maintain tighter control over when upgrades are performed for your hosts.
Thank you for you reply.
The snapshot repository seems to be what we need. However I read that it’s still in preview. Is there a discussion I missed about it’s evolution?
Also, I do not see the Galactic distribution in the repository. Why is that?
EDIT: I stumbled upon this post, that answers my second question (Galactic is not a LTS distro).