Protected/Important packages are not deconfigured, require Force-LoopBreak
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Undecided
|
Unassigned | ||
Groovy |
Fix Released
|
Undecided
|
Unassigned | ||
Hirsute |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[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-
On focal, we also introduce the actual support for protected packages to enable upgrading to later releases more easily (in case a protected package needs to be removed during the upgrade), and to make the backport more similar to main.
[Test plan]
Run the integration test suite (the autopkgtest) :)
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-
protected-
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-
For focal, we also do have a test to check that the Protected field is being used.
[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 (this only applies to releases with Protected support in dpkg, Important is not affected, it's always been "normal" for dpkg).
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.
On focal, we pass additional flags to dpkg that focal's dpkg does not understand, however, we only do that if dpkg asserts it does that, so in practice, this should all work fine and the code path will only be taken with >=groovy dpkg.
description: | updated |
Changed in apt (Ubuntu Hirsute): | |
status: | New → Triaged |
Changed in apt (Ubuntu Groovy): | |
status: | New → Incomplete |
status: | Incomplete → Triaged |
Changed in apt (Ubuntu Focal): | |
status: | New → Triaged |
Changed in apt (Ubuntu Bionic): | |
status: | New → Triaged |
description: | updated |
Changed in apt (Ubuntu Groovy): | |
status: | Triaged → In Progress |
Changed in apt (Ubuntu Hirsute): | |
status: | Triaged → Fix Released |
description: | updated |
tags: |
added: verification-done-focal removed: verification-donefocal |
Hello Julian, or anyone else affected,
Accepted apt into groovy-proposed. The package will build now and be available at https:/ /launchpad. net/ubuntu/ +source/ apt/2.1. 10ubuntu0. 3 in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification- needed- groovy to verification- done-groovy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification- failed- groovy. In either case, without details of your testing we will not be able to proceed.
Further information regarding the verification process can be found at https:/ /wiki.ubuntu. com/QATeam/ PerformingSRUVe rification . Thank you in advance for helping!
N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.