Public bug reported: [Impact] If two intertwined updates are being released, call them "breaks-phased-dep" and "phased-dep", version 2; both are installed in version 1; and "breaks-phased-dep" is available to install (e.g. fully phased), then `apt full-upgrade/dist-upgrade` will remove "phased-dep" to install "breaks-phased-dep".
The expected behavior is that "breaks-phased-dep" is kept back as the new version of the dependency is not yet ready. [Test plan] Regression test suite, with the addition of new test: # Test case breaks-phased-dep: A released update breaks installed version of phased-dep insertinstalledpackage 'phased-dep' 'all' '1' insertinstalledpackage 'breaks-phased-dep' 'all' '1' insertpackage 'unstable-updates' 'breaks-phased-dep' 'all' '3' 'Breaks: phased-dep (<< 3)' insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 'Phased-Update-Percentage: 0' setupaptarchive testsuccessequal "Reading package lists... Building dependency tree... Calculating upgrade... The following packages have been kept back: breaks-phased-dep 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." aptget dist-upgrade [Where problems could occur] here be dragons [Details] This should also affect the original implementation in update-manager. Basically both implementations work by first calculating the full upgrade, and then reverting any upgrades to phased packages using MarkKeep. However; in case of a Breaks, the phased package at this point is marked "remove" and not "upgrade", so the keep back logic does not trigger. ** Affects: apt (Ubuntu) Importance: Medium Status: Triaged ** Affects: update-manager (Ubuntu) Importance: Undecided Status: New ** Affects: update-manager (Ubuntu Focal) Importance: Undecided Status: New ** Affects: apt (Ubuntu Jammy) Importance: Undecided Status: New ** Affects: update-manager (Ubuntu Jammy) Importance: Undecided Status: Won't Fix ** Affects: apt (Ubuntu Noble) Importance: Undecided Status: New ** Affects: update-manager (Ubuntu Noble) Importance: Undecided Status: Won't Fix ** Affects: apt (Ubuntu Oracular) Importance: Undecided Status: New ** Affects: update-manager (Ubuntu Oracular) Importance: Undecided Status: Won't Fix ** Affects: apt (Ubuntu Plucky) Importance: Medium Status: Triaged ** Affects: update-manager (Ubuntu Plucky) Importance: Undecided Status: Won't Fix ** Changed in: apt (Ubuntu) Status: New => Triaged ** Changed in: apt (Ubuntu) Importance: Undecided => Medium ** Description changed: [Impact] If two intertwined updates are being released, call them "breaks-phased-dep" and "phased-dep", version 2; both are installed in version 1; and "breaks-phased-dep" is available to install (e.g. fully phased), then `apt full-upgrade/dist-upgrade` will remove "phased-dep" to install "breaks-phased-dep". The expected behavior is that "breaks-phased-dep" is kept back as the new version of the dependency is not yet ready. [Test plan] Regression test suite, with the addition of new test: # Test case breaks-phased-dep: A released update breaks installed version of phased-dep insertinstalledpackage 'phased-dep' 'all' '1' insertinstalledpackage 'breaks-phased-dep' 'all' '1' insertpackage 'unstable-updates' 'breaks-phased-dep' 'all' '3' 'Breaks: phased-dep (<< 3)' insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 'Phased-Update-Percentage: 0' setupaptarchive testsuccessequal "Reading package lists... Building dependency tree... Calculating upgrade... The following packages have been kept back: - breaks-phased-dep + breaks-phased-dep 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." aptget dist-upgrade [Where problems could occur] here be dragons + + [Details] + This should also affect the original implementation in update-manager. Basically both implementations work by first calculating the full upgrade, and then reverting any upgrades to phased packages using MarkKeep. + + However; in case of a Breaks, the phased package at this point is marked + "remove" and not "upgrade", so the keep back logic does not trigger. ** Also affects: update-manager (Ubuntu) Importance: Undecided Status: New ** Also affects: apt (Ubuntu Jammy) Importance: Undecided Status: New ** Also affects: update-manager (Ubuntu Jammy) Importance: Undecided Status: New ** Also affects: apt (Ubuntu Plucky) Importance: Medium Status: Triaged ** Also affects: update-manager (Ubuntu Plucky) Importance: Undecided Status: New ** Also affects: apt (Ubuntu Focal) Importance: Undecided Status: New ** Also affects: update-manager (Ubuntu Focal) Importance: Undecided Status: New ** Also affects: apt (Ubuntu Oracular) Importance: Undecided Status: New ** Also affects: update-manager (Ubuntu Oracular) Importance: Undecided Status: New ** Also affects: apt (Ubuntu Noble) Importance: Undecided Status: New ** Also affects: update-manager (Ubuntu Noble) Importance: Undecided Status: New ** No longer affects: apt (Ubuntu Focal) ** Changed in: update-manager (Ubuntu Jammy) Status: New => Won't Fix ** Changed in: update-manager (Ubuntu Noble) Status: New => Won't Fix ** Changed in: update-manager (Ubuntu Oracular) Status: New => Won't Fix ** Changed in: update-manager (Ubuntu Plucky) Status: New => Won't Fix -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2098140 Title: Breaks: phased-dep (<< phasing version) removes phased-dep To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2098140/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs