If the libvirt-qemu user/group already exists with different uid/gid than the allocated numeric ID (64055), or if this ID is already in use by another user/group, stop/ask user if it is OK to continue (e.g., no plans to perform guest migration over NFS) or abort to go fix the problem.
Signed-off-by: Mauricio Faria de Oliveira <mauri...@linux.vnet.ibm.com> --- debian/libvirt-daemon-system.config | 30 ++++++++++++++++++++++++++++++ debian/libvirt-daemon-system.postinst | 3 +++ debian/libvirt-daemon-system.templates | 19 +++++++++++++++++++ debian/rules | 1 + 4 files changed, 53 insertions(+) create mode 100755 debian/libvirt-daemon-system.config create mode 100644 debian/libvirt-daemon-system.templates diff --git a/debian/libvirt-daemon-system.config b/debian/libvirt-daemon-system.config new file mode 100755 index 0000000..27ce292 --- /dev/null +++ b/debian/libvirt-daemon-system.config @@ -0,0 +1,30 @@ +#!/bin/sh -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +# Allocated UID and GID for libvirt-qemu +LIBVIRT_QEMU_UID=64055 +LIBVIRT_QEMU_GID=64055 + +# Check if libvirt-qemu user/group is assigned a different UID/GID or vice-versa. +NAME_TO_UID="$(getent passwd libvirt-qemu | cut -d: -f3)" +NAME_TO_GID="$(getent group libvirt-qemu | cut -d: -f3)" +UID_TO_NAME="$(getent passwd $LIBVIRT_QEMU_UID | cut -d: -f1)" +GID_TO_NAME="$(getent group $LIBVIRT_QEMU_GID | cut -d: -f1)" + +if ( [ -n "$NAME_TO_UID" ] && [ "$NAME_TO_UID" != "$LIBVIRT_QEMU_UID" ] ) \ +|| ( [ -n "$NAME_TO_GID" ] && [ "$NAME_TO_GID" != "$LIBVIRT_QEMU_GID" ] ) \ +|| ( [ -n "$UID_TO_NAME" ] && [ "$UID_TO_NAME" != 'libvirt-qemu' ] ) \ +|| ( [ -n "$GID_TO_NAME" ] && [ "$GID_TO_NAME" != 'libvirt-qemu' ] ) \ +then + # Ask if the user would like to continue or abort installation. + db_input high libvirt-daemon-system/id_warning || true + db_go + db_get libvirt-daemon-system/id_warning + if [ "$RET" = "false" ]; then + exit 1 + fi +fi + +exit 0 diff --git a/debian/libvirt-daemon-system.postinst b/debian/libvirt-daemon-system.postinst index 99e9fec..f36b806 100644 --- a/debian/libvirt-daemon-system.postinst +++ b/debian/libvirt-daemon-system.postinst @@ -17,6 +17,9 @@ set -e # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package +# Source debconf library. +. /usr/share/debconf/confmodule + add_users_groups() { if ! getent group libvirt >/dev/null; then diff --git a/debian/libvirt-daemon-system.templates b/debian/libvirt-daemon-system.templates new file mode 100644 index 0000000..57193b0 --- /dev/null +++ b/debian/libvirt-daemon-system.templates @@ -0,0 +1,19 @@ +Template: libvirt-daemon-system/id_warning +Type: boolean +Default: false +Description: Continue with incorrect libvirt-qemu user/group ID(s)? + This system seems to already have a libvirt-qemu user and/or + group with different ID(s) than the allocated (64055) or the + numeric ID is already taken by another user/group. + . + The migration of guests with disk image files shared over NFS + requires a static libvirt-qemu user and group ID (uid and gid) + between the source and destination host systems. + . + If guest migration over NFS is not required you can continue + the installation. + . + In order to resolve this problem, do not continue the installation, + remove the libvirt-qemu user/group and/or the 64055 uid/gid (which + might involve changing permissions for its owned files) and try to + install this package again. diff --git a/debian/rules b/debian/rules index 6e0a416..ec9d90d 100755 --- a/debian/rules +++ b/debian/rules @@ -159,6 +159,7 @@ override_dh_auto_test: fi override_dh_install-arch: + dh_installdebconf dh_install # Copy upstream files to debian/ so dh_* can find them -- 2.10.2