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
- s6-rc-set-install checks that the set of services set
has been committed and that no changes have occurred since.
- It takes the corresponding service database and copies it to the same directory as bootdb.
- It calls s6-rc-update on that copy of the compiled service
database, which makes it the new live database. Some services may be stopped, and
other started, in the process.
- It updates the bootdb link to point to the new database, so that
next boot uses it.
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
- s6-rc-set-install is a simple wrapper around s6-rc-update
that ties the repo commands and the way they manage service sets with the
basic operation of the s6-rc engine.