Packaging recommendations#
Below are a few recommendations for packagers of Incus.
Following those recommendations should provide a more predictable experience across Linux distributions.
Packages#
It’s usually a good idea to at least split things into an incus and incus-client package.
The latter allows for installing just the incus command line tool without bringing the daemon and its dependencies.
Additionally, it may be useful to have an incus-tools package with some of the less commonly used tools like fuidshift, lxc-to-incus, incus-benchmark and incus-migrate.
Groups#
Two groups should be provided:
incus-adminwhich grants access to theunix.socketsocket and effectively grants full control over Incus.incuswhich grants access to theuser.socketsocket which provides users with a restricted Incus project.
Init scripts#
The following assumes the use of systemd. Distributions not using
systemd should try to stick to a similar naming scheme but will likely
see some differences on things like socket activation.
incus.serviceis the main unit that starts and stops theincusddaemon.incus.socketis the socket-activation unit for theincus.serviceunit. If present,incus.serviceshould not be made to start on its own.incus-user.serviceis the unit responsible for starting and stopping theincus-userdaemon.incus-user.socketis the socket-activation unit for theincus-user.serviceunit. If present,incus-user.serviceshould not be made to start on its own.incus-startup.serviceuses theincusd activateifneededcommand to trigger daemon startup if it is required. It also callsincusd shutdownto handle orderly shutdown of instances on host shutdown.
Binaries#
The incusd and incus-user daemons should be kept outside of the user’s PATH.
The same is true of incus-agent which needs to be available in the daemon’s PATH but not be visible to users.
The main binary that should be made visible to users is incus.
On top of those, the following optional binaries may also be made available:
fuidshift(should be kept to root only)incus-benchmarkincus-migratelxc-to-incuslxd-to-incus(should be kept to root only)