s6-rc: the s6-rc-set-fix program
Keywords: s6-rc s6-rc-set-fix repo set check fix consistency dependencies

s6-rc
Software
skarnet.org

# The s6-rc-set-fix program

s6-rc-set-fix checks one or more sets of services for dependency inconsistencies, and fixes them.

## Interface

         s6-rc-set-fix [ -v verbosity ] [ -r repo ] [ -u | -d ] [ -E | -e ] [ -n ] [ sets... ]

- s6-rc-set-fix checks all the sets listed in sets... for dependency inconsistencies that may prevent s6-rc-set-commit from succeeding. If sets... is empty, all the sets in the repository are checked.
- s6-rc-set-fix prints what it finds and changes the rxs of impacted services so the resulting set is consistent.

## 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. Dependency inconsistencies are warnings, so will be displayed at the default level (but not at 0); more details can be obtained by increasing the verbosity.
-r repo, --repository=repo
  Use the repository in repo, which must exist. Default is /var/lib/s6-rc/repository.
-u, --fix-up
  When a dependency inconsistency is found, fix it by bringing in more services into the starting bundle. If `B` depends on `A`, `B` is active but `A` is only usable or even masked, fix the situation by making `A` active. This means that more services will be started at boot time than the set initially declared.
-d, --fix-down
  When a dependency inconsistency is found, fix it by bringing in fewer services into the starting bundle. If `B` depends on `A`, `B` is active but `A` is only usable or even masked, fix the situation by making `B` usable (if `A` is usable) or masked (if `A` is masked). This means that fewer services will be started at boot time than the set initially declared. This is the default.
-E, --no-force-essential
  If fixing a dependency inconsistency would imply moving a service down from the always rx, or up to the always rx, when its service definition directory does not declare it as essential, do not attempt fixing it and fail the operation. This is the default. If such a situation occurs, it means that the set of services provided in the stores is not consistent, and that is what should be fixed.
-e, --force-essential
  If fixing a dependency inconsistency would imply moving a service down from the always rx, or up to the always rx, when its service definition directory does not declare it as essential, do it, even though it goes against a service definition in a store. This can help you keep a service set consistent until the store is fixed.
-n, --dry-run
  Check for inconsistencies, but only print what would be needed to fix the set; do not perform the fix.

## Exit codes

0
  Success.
1
  A needed modification could not be made because the `-e` option was not given.
100
  Incorrect usage.
102
  Inconsistent repository.
111
  System call failed.