Comment 0 for bug 1916725

Revision history for this message
Julian Andres Klode (juliank) wrote :

[Impact]
If a package that is Protected: yes (or Important: yes), or one of it's dependencies, is involved in a dependency loop with Breaks, APT requires APT::Force-LoopBreak instead of resolving the situation directly.

[Test plan]
Our test suite covers the tests for both Breaks and Conflicts.

Breaks:

protected-sysvinit (= 1) without dependencies is installed
protected-sysvinit (= 2) Pre-Depends protected-systemd-sysv
protected-systemd-sysv (= 2) Breaks: protected-sysvinit (<< 2)

Test: Install protected-sysvinit (= 2)
Expected result: Unpacking protected-sysvinit (= 2) deconfigures protected-sysvinit (= 1), and then we unpack and configure protected-sysvinit (= 2) and end up with a working system.

Conflicts: As for Breaks, but the Conflicts will remove the package temporarily, requiring the use of APT::Force-LoopBreak option.

[Where problems could occur]
We now allow dpkg to automatically deconfigure protected packages. This should just make them behave like normal packages to APT's eye, but bugs I guess could occur somewhere in the APT/dpkg interaction.

During development, we accidentally simplified the patch so much that Conflicts did not require Force-LoopBreak for temporary removal. We fixed that, but it points out that there is a place where the loop break check happens that is a potential regression place.