ros2 / ci

ROS 2 CI Infrastructure
http://ci.ros2.org/
Apache License 2.0
48 stars 30 forks source link

Opt-out of Phased Updates in apt. #667

Closed nuclearsandwich closed 2 years ago

nuclearsandwich commented 2 years ago

Docker containers are built using a succession of images, each of of which is created by running an intermediate container and saving the result.

These individual containers can end up with different information that puts them in different "phases" of the apt phased update rollout.

When combined with a phased update for a set of binary packages that all rely on matching versions, it can create an unsatisfiable condition where an earlier binary from the source package was installed in the "ahead" phase and a later package is installed "behind".

Phased updates only became supported in apt 2.1.16 released in Ubuntu 21.04 so this was not an issue for us prior to Ubuntu 22.04.

nuclearsandwich commented 2 years ago

:penguin: Build Status :penguin: :mechanical_arm: Build Status

nuclearsandwich commented 2 years ago

I haven't gone back to find the record yet but were apt installation issues on ARM hosts earlier which we thought at the time were problems with apt mirror synchronization but may actually have been an earlier less egregious version of this problem.

nuclearsandwich commented 2 years ago

penguin Build Status penguin mechanical_arm Build Status

These results (50:50) are not encouraging since any time we bust the docker cache we have a chance of landing all "behind" or all "ahead" and being able to build.

So something about this change is insufficient and I kept "getting lucky" when testing it locally.

nuclearsandwich commented 2 years ago

:penguin: Build Status :penguin: :mechanical_arm: Build Status

Blast545 commented 2 years ago

LGTM after reading a bit on this:

https://wiki.ubuntu.com/StableReleaseUpdates#Phasing https://askubuntu.com/questions/1246962/what-apt-configuration-file-should-the-never-include-phased-updates-flag-be-pl