[Bug 1916725] Re: Protected/Important packages are not deconfigured, require Force-LoopBreak
Julian Andres Klode
1916725 at bugs.launchpad.net
Wed Mar 10 12:47:32 UTC 2021
** Description changed:
[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.
+
+ 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-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.
+ 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.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1916725
Title:
Protected/Important packages are not deconfigured, require Force-
LoopBreak
Status in apt package in Ubuntu:
Fix Released
Status in apt source package in Bionic:
Triaged
Status in apt source package in Focal:
Triaged
Status in apt source package in Groovy:
In Progress
Status in apt source package in Hirsute:
Fix Released
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-LoopBreak instead of resolving the situation directly.
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-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.
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.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1916725/+subscriptions
More information about the foundations-bugs
mailing list