S6-RC-SET-INSTALL(8)

πŸ“¦ version 0.7.0.0, in nixpkgs unstable

πŸ’… S6-RC-SET-INSTALL(8) β€” like, the system manager's manual, but make it make sense

okay so bestie, welcome to s6-rc-set-install (that's the 8 β€” system manager's manual territory, we're in the big leagues now) ✨


🌸 NAME 🌸

s6-rc-set-install β€” installs a committed set of services (which is to say, a compiled database) as the live database of the system that's currently running πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

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

πŸ¦‹ DESCRIPTION πŸ¦‹

So s6-rc-set-install installs a committed set of services β€” a compiled database, the kind produced by s6-rc-set-commit(8) β€” and makes it the live database of the system that's running right now. No cap, that's the whole job πŸ’…

It's basically a wrapper around s6-rc-update(8). Like, a really well-dressed wrapper.

Here's the little journey it takes:

  • It checks that the set of services set has actually been committed, and that nothing has changed since. Vibe check passed or we're not proceeding 🫢
  • It takes the corresponding service database and copies it to the same directory as bootdb.
  • It calls s6-rc-update(8) on that copy of the compiled service database, which is what makes it the new live database. Some services may be stopped and other started in the process β€” that's just how it goes, main character energy πŸ’€
  • It updates the bootdb link to point at the new database, so the next boot uses it. Setting future-you up, iconic behavior πŸ‘‘

✨ Notes ✨

  • s6-rc-set-install is a simple wrapper around s6-rc-update(8) that ties the s6-rc-repo(7) commands β€” and the way they manage service sets β€” with the basic operation of the s6-rc engine. Lowkey the glue holding it all together 🌈

πŸ”₯ OPTIONS πŸ”₯

  • -v verbosity, --verbosity=verbosity β€” be more or less verbose. Default is 1, which means error messages and warnings get written to stderr. 0 means only error messages get written, and 2 or more adds informational messages. Adjust your yap level accordingly πŸ—£οΈ
  • -r repo, --repository=repo β€” use the repository in repo, which must exist, bestie. 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's given to the -c option of s6-rc-init(8) at boot time. Default is /etc/s6-rc/compiled/current. Note that bootdb must always be a symlink, pointing to the real compiled database at any time. Always. Non-negotiable πŸ™ˆ
  • -l livedir, --livedir=livedir β€” assume the live directory of the machine, as created by s6-rc-init(8), is livedir. Default is /run/s6-rc, but it 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(8). The default is not having a conversion file, which should be correct in most cases. Most cases! πŸŽ€
  • -b, --block β€” passes the -b option to s6-rc-update(8), 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. Patience is a virtue fr fr ⭐
  • -K, --keep-old β€” if this option is given, the old live database, after it's been replaced, is kept 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. So like, cherish it while you have it 🌸
  • -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(8). Yes we're being brave about it πŸ”₯
  • -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 don't stop them. Which may put the machine in an inconsistent state 😭
bestie. I'm gonna say this gently. -E can put the machine in an inconsistent state. That's not me being dramatic, that's the man page. Know what you're doing πŸ’€
  • --no-update β€” only copy the database from the repository and link it as the boot database; do not run s6-rc-update(8). 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 STATUS πŸ‘‘

  • 0 β€” Success. Slay ✨
  • 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(8). So if you see a number you don't recognize, it's probably just visiting from next door πŸ¦‹

🌈 SEE ALSO 🌈

s6-rc-repo(7), s6-rc-init(8), s6-rc-set-commit(8), s6-rc-update(8)

This man page is ported from the authoritative documentation at: https://skarnet.org/software/s6-rc/s6-rc-set-install.html


πŸ’– AUTHORS πŸ’–

Laurent Bercot Carlos Eduardo <carana2099@gmail.com> (man page port)


okay that's the whole page, you ate that πŸ’… one last cute sign-off: this lil number lives under the Debian umbrella and it's dated January 24, 2026 β€” go forth and install your service sets responsibly, bestie πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from