s6-rc: the s6-rc-repo-init program
Keywords: s6-rc repo init initialisation update setup repository

s6-rc
Software
skarnet.org

# The s6-rc-repo-init program

s6-rc-repo-init initializes a repository on a system, linking it to a list of stores and ensuring that the set of all services defined in all the stores is consistent.

## Interface

         s6-rc-repo-init [ -v verbosity ] [ -r repo ] [ -h fdhuser ] [ -f ] [ -U ] [ -B ] stores...

- s6-rc-repo-init creates an s6-rc repository at location repo.
- It makes stores... (which must be a list of several locations in the filesystem) the current list of stores for this repository.
- It synchronizes with the list of stores, as if s6-rc-repo-sync had been called. That means that it imports all the services in the stores and builds the reference database.
- It exits 0.

## 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. The option is also passed to commands that s6-rc-repo-init may call, such as s6-rc-compile, so their verbosity will be similarly adjusted.
-r repo, --repository=repo
  Create the repository in repo. Default is /var/lib/s6-rc/repository. Unless the `-U` option is given, repo must not previously exist in the filesystem.
-h fdhuser, --fdholder-user=fdhuser
  You can safely ignore this option and forget about it. What it does is ensure that if a supervision tree is started as root on a compiled database produced by this command (this will never happen to the reference database, so it is only ever useful together with the `-U` option when there are sets to update), the fd-holder daemon in that supervision tree runs as fdhuser rather than root. Told you: you can safely forget about that option.
-f, --force
  Make a new repository at repo even if one already exists. This is dangerous, use of this option is not recommended.
-U, --update-stores
  Rather than create a new repository, change the list of stores in an existing one. This is useful, for instance, when a distribution's policies change and local stores are added, moved, or removed. It is not an operation that should be done frequently, however.
-B, --bare
  Do not synchronize the repository with the stores. This is useful if you are going to call s6-rc-repo-sync afterwards anyway.

## Exit codes

0
  Success.
1
  Failure. The services in the listed stores do not make a consistent reference database. With a nonzero verbosity, the error messages from s6-rc-compile will be displayed and detail exactly what went wrong.
100
  Incorrect usage.
111
  System call failed. This usually signals an issue with the underlying operating system.

## Notes

- s6-rc-repo-init is the first command to invoke when creating a repository, or when a change occurs within the stores.
- There is generally only one repository per system, but non-root users who would want to run their own tree of s6-rc services can do so by specifying an alternative repo.