s6-rc
Software
skarnet.org

The s6-rc-set-install program

s6-rc-set-install installs a committed set of services, i.e. a compiled database, as the live database of the currently running system.

It is basically a wrapper around s6-rc-update.

Interface

     s6-rc-set-install [ -v verbosity ] [ -r repo ] [ -c bootdb ] [ -l livedir ] [ -f convfile ] [ -b ] [ -K ] [ -e | -E ] set

Options

-v verbosity, --verbosity=verbosity
Be more or less verbose. The default is 1, which means that error messages and warnings will be written to stderr. 0 means that only error messages will be written, and 2 or more adds informational messages.
-r repo, --repository=repo
Use the repository in repo, which must exist. Default is /var/lib/s6-rc/repository.
-c bootdb, --bootdb=bootdb
Use bootdb as the path to the boot-time database. This must be the same path that is given to the -c option of s6-rc-init at boot time. The default is /etc/s6-rc/compiled/current. Note that bootdb must always be a symlink, pointing to the real compiled database at any time.
-l livedir, --livedir=livedir
Assume the live directory of the machine, as created by s6-rc-init, is livedir. The default is /run/s6-rc, but may have been changed at s6-rc build time with the --livedir configure argument.
-f convfile, --conversion-file=convfile
Specifies a conversion file to give to s6-rc-update. The default is not having a conversion file, which should be correct in most cases.
-b, --block
Pass the -b option to s6-rc-update, which makes it block rather than fail when the live database is currently being used by another program - typically when an s6-rc change transition is under way.
-K, --keep-old
If this option is given, the old live database, after it has been replaced, is kapt around, and s6-rc-set-install prints a line to stdout that is the path to that old database. It can e.g. be used by automation to keep the possibility of rollbacks. By default, s6-rc-set-install will delete the old live database after successfully updating to the new one.
-e, --force-essentials
If essential services running in the live database need to be stopped before the new set is installed, stop them. This is the default, even though it is not the default in s6-rc-update.
-E, --no-force-essentials
If essential services running in the live database need to be stopped before the new set is installed, treat them as really essential and do not stop them. This may put the machine in an inconsistent state.
--no-update
Only copy the database from the repository and link it as boot database; do not run s6-rc-update. This should only be used for a first installation, never when services are already managed with s6-rc — else it bypasses the check that the default enabled service set is actually viable, and might give an unpleasant surprise at next boot.

Exit codes

0
Success.
3
set was not found in the repository.
7
set was not up-to-date.
100
Incorrect usage.
102
Inconsistent repository.
111
System call failed.
Other codes
s6-rc-set-install can also exit with exit codes from s6-rc-update.

Notes