** Description changed: - Lubuntu is unable to install virt-manager in a nested testing + [ Impact ] + + * Lubuntu is unable to install virt-manager in a nested testing environment, due to a failure to install/configure libvirt-daemon- driver-qemu. - Setting up libvirt-daemon-driver-qemu (11.0.0-2ubuntu6) ... - [...] - Default libvirt network on 192.168.122.1/24 already taken - Changing to free 192.168.123.1/24 - sed: can't read /etc/libvirt/qemu/networks/default.xml: No such file or directory - dpkg: error processing package libvirt-daemon-driver-qemu (--configure): - installed libvirt-daemon-driver-qemu package post-installation script subprocess returned error exit status 2 + * Actually, this happens in any nested libvirt environment, where the + default IP "192.168.122.1" is already assigned. - See: https://paste.ubuntu.com/p/BQBNgyRbGs/ + * There seems to be an ordering issue of virt-manager depends, as + libvirt-daemon-driver-qemu postinst depends on data from libvirt-daemon- + config-network postinst but is not specifically declared as such. - ==== Reproducer ==== + * We need to modify libvirt's d/control, adding a "Pre-Depends: + libvirt-daemon-config-network" to the libvirt-daemon-driver-qemu binary. + This will automatically pull in libvirt-daemon-driver-network, creating + "/etc/libvirt/qemu/networks/autostart". It needs to be a Pre-Depends, as + the file "/etc/libvirt/qemu/networks/default.xml" is only created from + the "/usr/share/libvirt/networks/default.xml" template in libvirt- + daemon-config-network.postinst, i.e. after package configuration. + + [ Test Plan ] $ lxc launch ubuntu-daily:plucky pprc $ lxc shell pprc # apt update # apt install libvirt-daemon-driver-qemu [...] Setting up libvirt-daemon-driver-qemu (11.0.0-2ubuntu6) ... useradd warning: libvirt-qemu's uid 64055 is greater than SYS_UID_MAX 999 fatal: The group `libvirt' does not exist. Enabling libvirt default network ln: failed to create symbolic link '/etc/libvirt/qemu/networks/autostart/': No such file or directory dpkg: error processing package libvirt-daemon-driver-qemu (--configure): installed libvirt-daemon-driver-qemu package post-installation script subprocess returned error exit status 1 dmesg: read kernel buffer failed: Operation not permitted [...] Errors were encountered while processing: libvirt-daemon-driver-qemu needrestart is being skipped since dpkg has failed Error: Sub-process /usr/bin/dpkg returned an error code (1) => The '/etc/libvirt/qemu/networks/autostart/' is assumed to exist by libvirt-daemon-driver-qemu.postinst but it's not there. It's supposed to be installed by d/libvirt-daemon-driver-network.dirs. # ll /etc/libvirt/qemu/networks/autostart ls: cannot access '/etc/libvirt/qemu/networks/autostart': No such file or directory # apt install libvirt-daemon-driver-network [...] # ll /etc/libvirt/qemu/networks/autostart total 8 drwxr-xr-x 2 root root 4096 Apr 16 08:12 ./ drwxr-xr-x 3 root root 4096 Apr 16 08:12 ../ lrwxrwxrwx 1 root root 38 Apr 16 08:12 default.xml -> /etc/libvirt/qemu/networks/default.xml ## ATTENTION: This is a broken/dangling symlink => Alright, looking OK. But now there can be another issue when libvirt- daemon-driver-qemu.postinst tries to assign an alternative IP address range, because the default 192.168.122.1/24 is already taken, e.g. in nested environments. We can easily simulate that by assigning the 192.168.122.1 IP to eth0: # ip addr add 192.168.122.1 dev eth0 ## This would also happen if we're in a nested environment # apt purge libvirt-daemon-driver-qemu # apt install --reinstall libvirt-daemon-driver-qemu [...] Setting up libvirt-daemon-driver-qemu (11.0.0-2ubuntu6) ... useradd warning: libvirt-qemu's uid 64055 is greater than SYS_UID_MAX 999 Default libvirt network on 192.168.122.1/24 already taken Changing to free 192.168.123.1/24 sed: can't read /etc/libvirt/qemu/networks/default.xml: No such file or directory dpkg: error processing package libvirt-daemon-driver-qemu (--configure): installed libvirt-daemon-driver-qemu package post-installation script subprocess returned error exit status 2 Processing triggers for man-db (2.13.0-1) ... Errors were encountered while processing: libvirt-daemon-driver-qemu needrestart is being skipped since dpkg has failed Error: Sub-process /usr/bin/dpkg returned an error code (1) => libvirt-daemon-driver-qemu.postinst tries to manipulate /etc/libvirt/qemu/networks/default.xml (using "sed") which is not there. The file is created by "d/libvirt-daemon-config-network.postinst" from the /usr/share/libvirt/networks/default.xml template: $ apt-file find networks/default.xml libvirt-daemon-config-network: /usr/share/libvirt/networks/default.xml # apt install libvirt-daemon-config-network [...] Setting up libvirt-daemon-driver-qemu (11.0.0-2ubuntu6) ... Default libvirt network on 192.168.122.1/24 already taken Changing to free 192.168.123.1/24 Enabling libvirt default network [...] => Hooray, libvirt-daemon-driver-qemu is now successfully configured! - ==== Workaround ==== + [ Where problems could occur ] - In the end, the workaround is to "apt install libvirt-daemon-config- - network". + * We're introducing a Pre-Depends dependency on libvirt-daemon-config- + network from libvirt-daemon-driver-qemu, which could have unintended + side-effects and potentially lead to dependency loops. As we're now + enforcing libvirt-daemon-config-network to be installed and configured + before installing libvirt-daemon-driver-qemu. - ==== Proposed Fix ==== + [ Other Info ] - We need to modify libvirt's d/control, adding a "Pre-Depends: libvirt- - daemon-config-network" to the libvirt-daemon-driver-qemu binary. This - will automatically pull in libvirt-daemon-driver-network, creating - "/etc/libvirt/qemu/networks/autostart". It needs to be a Pre-Depends, as - the file "/etc/libvirt/qemu/networks/default.xml" is only created from - the "/usr/share/libvirt/networks/default.xml" template in libvirt- - daemon-config-network.postinst, i.e. after package configuration. + * The workaround is to "apt install libvirt-daemon-config-network". + + + + ---- Original bug report ---- + + Lubuntu is unable to install virt-manager in a nested testing + environment, due to a failure to install/configure libvirt-daemon- + driver-qemu. + + Setting up libvirt-daemon-driver-qemu (11.0.0-2ubuntu6) ... + [...] + Default libvirt network on 192.168.122.1/24 already taken + Changing to free 192.168.123.1/24 + sed: can't read /etc/libvirt/qemu/networks/default.xml: No such file or directory + dpkg: error processing package libvirt-daemon-driver-qemu (--configure): + installed libvirt-daemon-driver-qemu package post-installation script subprocess returned error exit status 2 + + See: https://paste.ubuntu.com/p/BQBNgyRbGs/
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2107448 Title: libvirt-daemon-driver-qemu fails to install (--configure) due to .postinst issue To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/2107448/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
