On 28 June 2016 at 06:13, Martin Pitt <mp...@debian.org> wrote: > Control: tag -1 pending > > Hello Felipe, > > CC'ing Andreas for the util-linux part. > > Felipe Sateler [2016-05-19 17:57 -0400]: >> update-rc.d currently has support for invoking insserv with the -f flag, >> to allow initscripts-less installations. This should allow packages to drop >> dependencies on the initscripts package. However, this does not work if the >> dependency is dropped, because now apt/dpkg can choose to configure the >> package before it configures initscripts. This leads to the situation that >> /etc/init.d/mountkernfs.sh exists (and thus invoke-rc.d does not pass -f >> flag), >> but the links in /etc/rc?.d/S??mountkernfs.sh are not created yet, and then >> insserv fails. > > I have some trouble reproducing this. In a schroot without initscipts, > when I do > > dpkg --unpack initscripts_2.88dsf-59.7_amd64.deb > > then there's only /etc/init.d/mountkernfs.sh.dpkg-new, as the > conffiles are only moved into place at configure time, not at unpack > time yet. And on upgrades the script and the previous rc?.d links > should already be in place. > > So could it be that this is limited to debootstrap as that might just > directly unpack conffiles instead of installing them as *.dpkg-new on > unpack? This would make sense for debootstrap as that isn't concerned > about upgrades. > > With this synthetic test I can reproduce it: > > apt-get download initscripts > dpkg --unpack initscripts_*.deb > mv /etc/init.d/mountkernfs.sh{.dpkg-new,} > update-rc.d hwclock.sh defaults > >> 2. Extend the check to the links (ie, check if >> `glob /etc/rc?.d/S??mountkernfs.sh` is not empty. > > I agree that this seems to be the best solution for now. Checkin for > /etc/init.d/mountkernfs.sh was supposed to be a test for "initscripts > is installed", but as you found it is only a sufficient test for > "initscripts is unpacked". > > So I think this is mostly just limited to debootstrap and thus > util-linux. But I'd indeed prefer if we do this in update-rc.d and > drop the workaround from util-linux again. > >> 3. Consult the dpkg database via dpkg-query to determine if initscripts has >> been >> configured > > Sounds fine as well, but more expensive than globbing, and actually > not quite trivial either. "dpkg-query --showformat='${Status}' --show" > needs parsing and has a trap as its package arguments are patterns, > not fixed names. And "dpkg-query --status" would also need a > non-trivial (but still simple, however) grep. > > So I committed this now: > > > http://anonscm.debian.org/cgit/collab-maint/init-system-helpers.git/commit/?id=14008bd4a > > I tested this with three scenarios (no initscripts, unpacked > initscripts, configured initscripts) in a schroot and it now works > fine. Does that sound ok to you?
I was very confused by this mail. We had already committed this same fix in 79a4036f (in 1.34), so I wondered why was this still a problem. Turns out the patch I applied on c167d9498a inadvertently reverted the change :/ So, +1 from me. -- Saludos, Felipe Sateler