libvirt/docs/compiling.rst
Peter Krempa fbd6b2480a docs: compiling: Add a paragraph suggesting installation from repository
Users should be encouraged to install libvirt from the distro's repos in
the first place.

Also encourage distro-specific ways to get newer versions, rather than
building from source manually.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2022-09-13 13:36:49 +02:00

3.4 KiB

libvirt Installation

Installing from distribution repositories

This is the recommended option to install libvirt. Libvirt is present in the package repositories of all major distributions. Installing a package from the package manager ensures that it's properly compiled, installed, and updated during the lifecycle of the distribution.

For users who wish to use the most recent version, certain distributions also allow installing the most recent versions of virtualization packages:

Fedora

Refer to https://fedoraproject.org/wiki/Virtualization_Preview_Repository

Gentoo

The app-emulation/libvirt is regularly updated, but newest versions are usually marked as testing by the ~* keyword.

Compiling a release tarball

libvirt uses the standard setup/build/install steps and mandates that the build directory is different from the source directory:

$ xz -dc libvirt-x.x.x.tar.xz | tar xvf -
$ cd libvirt-x.x.x
$ meson build

The meson script can be given options to change its default behaviour.

Note: Please ensure that you have the appropriate minimal meson version installed in your build environment. The minimal version for a specific package can be checked in the top level meson.build file in the meson_version field.

To get the complete list of the options run the following command:

$ meson configure

When you have determined which options you want to use (if any), continue the process.

Note the use of sudo with the ninja install command below. Using sudo is only required when installing to a location your user does not have write access to. Installing to a system location is a good example of this.

If you are installing to a location that your user does have write access to, then you can instead run the ninja install command without putting sudo before it.

$ meson build [possible options]
$ ninja -C build
$ sudo ninja -C build install

At this point you may have to run ldconfig or a similar utility to update your list of installed shared libs.

Building from a GIT checkout

The libvirt build process uses Meson build system. By default when the meson is run from within a GIT checkout, it will turn on -Werror for builds. This can be disabled with --werror=false, but this is not recommended.

To build & install libvirt to your home directory the following commands can be run:

$ meson build --prefix=$HOME/usr
$ ninja -C build
$ sudo ninja -C build install

Be aware though, that binaries built with a custom prefix will not interoperate with OS vendor provided binaries, since the UNIX socket paths will all be different. To produce a build that is compatible with normal OS vendor prefixes, use

$ meson build -Dsystem=true
$ ninja -C build

When doing this for day-to-day development purposes, it is recommended not to install over the OS vendor provided binaries. Instead simply run libvirt directly from the source tree. For example to run a privileged libvirtd instance

$ su -
# service libvirtd stop  (or systemctl stop libvirtd.service)
# /home/to/your/checkout/build/src/libvirtd

It is also possible to run virsh directly from the build tree using the ./run script (which sets some environment variables):

$ pwd
/home/to/your/checkout/build
$ ./run ./tools/virsh ....