[Pkg-libvirt-maintainers] Bug#757330: Bug#757330: Bug#757330: libvirt-daemon-system: fails to install: update-rc.d: error: insserv rejected the script header
Guido Günther
agx at sigxcpu.org
Thu Aug 7 17:06:31 UTC 2014
Hi,
Thanks for reporting back.
On Thu, Aug 07, 2014 at 02:50:57PM +0200, Thorsten Glaser wrote:
> DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper mv_conffile in preinst of libvirt-bin
> DEBUG: dpkg-maintscript-helper: CONFFILE=/etc/default/libvirt-bin -> /etc/default/libvirtd PACKAGE=libvirt-bin:i386 LASTVERSION=1.2.6-1~ ACTION=upgrade PARAM=1.2.4-3.2
> DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper mv_conffile in preinst of libvirt-bin
> DEBUG: dpkg-maintscript-helper: CONFFILE=/etc/init.d/libvirt-bin -> /etc/init.d/libvirtd PACKAGE=libvirt-bin:i386 LASTVERSION=1.2.6-1~ ACTION=upgrade PARAM=1.2.4-3.2
Everything looks as expected but here's the issue:
>From dpkg-maintscript-helper:
Renaming a conffile
[..snip..]
Current implementation: the preinst checks if the conffile has been modified, if yes it's left on place otherwise it's renamed to old-
conffile.dpkg-remove. On configuration, the postinst removes old-conffile.dpkg-remove and renames old-conffile to new-conffile if old-
conffile is still available. On abort-upgrade/abort-install, the postrm renames old-conffile.dpkg-remove back to old-conffile if
required.
So since you modified /etc/init.d/libvirt-bin it's left in place and
when insserv runs in the postinst there is /etc/init.d/libvirt-bin and
/etc/init.d/libvirtd both providing libvirt-bin which breaks insserv.
The situation would be improved if we'd moved the conf file rename
_prior_ to the insserv (added by dh_installinit). Is this possible
with debhelper without open coding it?
But this still isn't enough. If you didn't modify
/etc/default/libvirt-bin then this file would be renamed to
/etc/default/libvirtd and the nonexistent /e/d/libvirt-bin would
result in start_libvirtd != yes and the daemon wouldn't be started
again.
So we additinally need to add a symlink from /etc/default/libvirt-bin
to /etc/default/libvirtd (since this is what your then renamed script
would source).
The simplest solution would be to just remove libvirt-bin from the
Provides in the init script headers. Nothing else in Debian seems to
require it. Only nova-compute has it in the Should-Start and that
could easily be fixed (and a Breaks: added to libvirt-daemon-system).
I'm cc'eing Raphael since he might have encountered this before.
Cheers
-- Guido
More information about the Pkg-libvirt-maintainers
mailing list