Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
Hi, On 2016-03-11 16:49, Andreas Henriksson wrote: > It would be very welcome if you wanted to test the two steps I see. Logs attached. Both steps worked. It's a bit more involved than I initially thought. We cannot create a reference upgrade path jessie -> sid right now. So I created a fake reference from just plain sid (which also triggered a bug in seldomly used piuparts options --save-end-meta, --end-meta). Therefore ignore the final failure since the upgraded system doesn't perfectly match the fake reference system I provided. Also ignore the fact that there is a downgrade to the sid versions at the end - it's just trying to restore the reference state (since it involved (pseudo-)essential packages, usually the tested packages would be just removed). If there are some more upgrade paths you are interested in (e.g. extra packages from jessie installed initially), please let me know. Andreas PS: If you add a Packages.gz to the packages you provided, I could directly use your URLs a testdebs repos without mirroring them. (dpkg-scanpackages . | gzip -9 > Packages.gz) step1.a.log.gz Description: application/gzip step2.a.log.gz Description: application/gzip
Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
Hello Andreas! :) On Fri, Mar 11, 2016 at 02:49:46PM +0100, Andreas Beckmann wrote: > Hi Andreas, > > On Thu, Mar 10, 2016 at 04:18:27PM -0800, Josh Triplett wrote: > >> Even with util-linux 2.27.1-5, I still hit a dependency loop that caused > > [... cut long explanation ...] > > That sounds complicated, and I don't have time to look into the details > right now. But I could help if you want to get upgrade paths tested with > piuparts. Thanks for your offer! It would be very welcome if you wanted to test the two steps I see. step1: fix this bug report (in a contained fashion to u-l), packages at: https://people.debian.org/~ah/817857/step1/ (This is the same packaging changes as previously attached diff.) step2: once things have settled down after step1, revert half the changes of step1 and do a synchronized upload together with sysvinit. Packages at: https://people.debian.org/~ah/817857/step2/ I've manually (debootstrap + add sid, local-repo + dist-upgrade) tested: * stable -> step1 -> step2 * stable -> step2 > > Or you can do drop the debs to test in e.g. /tmp/mydebstotest (together > with a Packages file) yourself and run something like > > piuparts ... -d jessie -d sid --bindmount /tmp/mydebstotest > --testdebs-repo /tmp/mydebstotest --distupgrade-to-testdebs --apt hello > > (that will do a dist-upgrade from jessie to sid, but with some newer > local packages overriding the ones from sid) Thanks for the hint. I should start using piuparts more myself. Will look into this once I find more time which is currently scarce. Regards, Andreas Henriksson
Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
Hi Andreas, > On Thu, Mar 10, 2016 at 04:18:27PM -0800, Josh Triplett wrote: >> Even with util-linux 2.27.1-5, I still hit a dependency loop that caused [... cut long explanation ...] That sounds complicated, and I don't have time to look into the details right now. But I could help if you want to get upgrade paths tested with piuparts. Or you can do drop the debs to test in e.g. /tmp/mydebstotest (together with a Packages file) yourself and run something like piuparts ... -d jessie -d sid --bindmount /tmp/mydebstotest --testdebs-repo /tmp/mydebstotest --distupgrade-to-testdebs --apt hello (that will do a dist-upgrade from jessie to sid, but with some newer local packages overriding the ones from sid) Andreas
Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
Hello Josh Triplett. Thanks for your bug report ... *double-sigh*. On Thu, Mar 10, 2016 at 04:18:27PM -0800, Josh Triplett wrote: [...] > Even with util-linux 2.27.1-5, I still hit a dependency loop that caused > apt to refuse to proceed: > > util-linux 2.27.1-5 Depends on init-system-helpers (>= 1.29~) > init-system-helpers 1.29 Breaks sysvinit-utils (< 2.88dsf-59.3~) > sysvinit-utils 2.88dsf-59.3 Breaks util-linux (< 2.26.2-3) [...] I'm basically ready to throw in the towel, revert the changes and wait for Stretch to ship with init-system-helpers 1.29 and then revisit this, even though I'd really like to avoid waiting Some info: util-linux only needs the fixed update-rc.d from i-s-h 1.29 to be available during config (postinst) phase. sysvinit-utils should really depend on util-linux rather than Breaks. Despite both of the above it's not obvious to me how the dependency loop can be avoided without waiting for stretch. In theory 'init-system-helpers (>= 1.29~) | initscripts' would be what I'm trying to say, but I don't think apt/dpkg groks that properly and initscripts introduces the old u-l<->initscripts<->sysvinit-utils cycle as well. My only idea which seems kind of edgy and needs careful consideration would be to entirely drop the versioned init-system-helpers dependency. It's only needed if initscripts is not available (*purged*), and as I see it: - in stable, initscripts is not even uninstallable so guaranteed to be available (as no relation in the world can make it become purged which is needed to cause problems since the contents are conffiles). - in testing/unstable, initscripts is not uninstallable until after util-linux has been upgraded (and even after that some packages in a current normal install keeps depending on initscripts but that might change. Nothing in debootstrap --variant=minbase, except previous util-linux, deps on initscripts). - in a partial upgrade from stable where only util-linux has been upgraded making it possible to purge initscripts (atleast from debootstrap --variant=minbase) causes sysvinit-utils to be upgraded as well which in turn has dep: init-system-helpers (>= 1.25~) Not quite new enough, but >= 1.25~ and << 1.29~ are not available currently in either testing or unstable repos so only outdated partial upgrades would be affected. The theoretical gap here is likely so minimal that it basically can be ignored. I'm attaching a patch for the above idea. Feedback very welcome. Help needed to verify all cases are covered properly. (Fwiw, if we go ahead without reverting then I'd also like to turn util-linux dep on sysvinit-utils back into a breaks which needs a synchronized upload of sysvinit to turn it's breaks on util-linux into a depends as well. At the same time we could just bump the i-s-h dependency version to close the above theoretical gap while at it.) Regards, Andreas Henriksson diff --git a/debian/changelog b/debian/changelog index 045c01c..850a045 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +util-linux (2.27.1-5+test3) UNRELEASED; urgency=medium + + * Drop (versioned) init-system-helpers dependency to avoid dep loop. +- initscripts is guaranteed to be installed in stable, the file + is additionally a conffile so initscripts will need to be + purged to cause a problem for us with i-s-h << 1.29 and purging + initscripts is not possible until after the upgrade anyway. +(Closes: #817857) + * Temporarily move sysvinit-utils back from Breaks to Depends. +- again seems to confuse apt and we apparently need a synchronized + upload with sysvinit to move things to how it should (and now + can be since initscripts dependency was dropped from u-l) be + described. + + -- Andreas HenrikssonFri, 11 Mar 2016 10:28:13 +0100 + util-linux (2.27.1-5) unstable; urgency=medium * Completely drop (versioned) tzdata dependency (Closes: #817371) diff --git a/debian/control b/debian/control index 351a6cc..20df17f 100644 --- a/debian/control +++ b/debian/control @@ -35,8 +35,9 @@ Build-Profiles: Section: utils Essential: yes Pre-Depends: ${misc:Pre-Depends}, ${shlibs:Depends} -Depends: init-system-helpers (>= 1.29~), - ${misc:Depends} +Depends: ${misc:Depends}, +# conceptually a Breaks:, but confuses apt (#786469) + sysvinit-utils (>= 2.88dsf-59.1~), Suggests: dosfstools, kbd | console-tools, util-linux-locales Replaces: bash-completion (<< 1:2.1-4.1~), sysvinit-utils (<< 2.88dsf-59.1~), @@ -46,7 +47,6 @@ Replaces: bash-completion (<< 1:2.1-4.1~), Breaks: bash-completion (<< 1:2.1-4.1~), grml-debootstrap (<< 0.68), cloud-utils (<< 0.27-1~), - sysvinit-utils (<< 2.88dsf-59.1~), mount (= 2.26.2-3), mount (= 2.26.2-3ubuntu1) Multi-Arch: foreign
Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
I am seeing the same behavior. Just installed fresh from netinst today, and tried to dist-upgrade to stretch (with the expectation I'd be moving to sid after another reboot + dist-upgrade) and I hit the dep loop as described above. Tried going straight from Jessie --> sid too but ran into same error and cannot proceed (thinking perhaps the fix had hit Sid but not stretch). Thanks for th effort to fix. Ben
Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie
Package: util-linux Version: 2.27.1-5 Severity: serious Even with util-linux 2.27.1-5, I still hit a dependency loop that caused apt to refuse to proceed: util-linux 2.27.1-5 Depends on init-system-helpers (>= 1.29~) init-system-helpers 1.29 Breaks sysvinit-utils (< 2.88dsf-59.3~) sysvinit-utils 2.88dsf-59.3 Breaks util-linux (< 2.26.2-3) sysvinit-utils and util-linux are both Essential. Result: ~$ sudo apt install util-linux Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: init-system-helpers libfdisk1 sysvinit-utils Suggested packages: bootlogd sash dosfstools kbd | console-tools util-linux-locales The following NEW packages will be installed: libfdisk1 The following packages will be upgraded: init-system-helpers sysvinit-utils util-linux 3 upgraded, 1 newly installed, 0 to remove and 11 not upgraded. Need to get 0 B/1198 kB of archives. After this operation, 930 kB of additional disk space will be used. Do you want to continue? [Y/n] E: This installation run will require temporarily removing the essential package sysvinit-utils:amd64 due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option. E: Internal Error, Could not early remove sysvinit-utils:amd64 (2)