Eric Blake wrote:
On 12/03/2013 01:40 PM, Jim Fehlig wrote:
> While installing a libvirt-daemon package build from a slightly modified
> upstream spec file (e.g. fedora and rhel replaced with suse_version and
> sles_version), I noticed warnings such as "warning: user qemu does not
> exist - using root".
>
> %files of libvirt-daemon has several hypervisor-specific files and
> directories, e.g.
>
> %dir %attr(0750, %{qemu_user}, %{qemu_group}) ...
>
> but afaict libvirt-daemon has no dependency on a package that creates
> the qemu user:group (e.g. qemu or qemu-kvm).
>
libvirt-daemon itself creates the qemu user on Fedora:
%if %{with_libvirtd}
%pre daemon
%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
# We want soft static allocation of well-known ids, as disk images
# are commonly shared across NFS mounts by id rather than name; see
#
https://fedoraproject.org/wiki/Packaging:UsersAndGroups
getent group kvm >/dev/null || groupadd -f -g 36 -r kvm
getent group qemu >/dev/null || groupadd -f -g 107 -r qemu
if ! getent passwd qemu >/dev/null; then
if ! getent passwd 107 >/dev/null; then
useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu
user" qemu
else
useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
fi
fi
exit 0
%endif
Part of the "slight modification" is removing this hypervisor-specific
code. Otherwise, if libvirt is built with xen and qemu support,
installing libvirt-daemon-driver-libxl will result in creating a qemu
user and qemu+kvm groups on a xen-only setup.
> I thought about moving hypervisor-specific files to the
> libvirt-daemon-driver-<hypervisor> packages, but have a hunch they are
> in the libvirt-daemon package for a reason I'm not considering. Should
> these files and directories be moved to their respective
> libvirt-daemon-driver-<hypervisor> packages, making libvirt-daemon more
> hypervisor-neutral?
>
That sounds like an independently useful suggestion regardless of how
you resolve the user creation issue - we've already had recent patches
to reduce the dependencies of libvirt-daemon by pushing Requires: lines
into the respective hypervisor packages.
I'll workup a patch for further discussion.
Regards,
Jim