[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