S6-RC-BUNDLE(8)

πŸ“¦ version 0.7.0.0, in nixpkgs unstable

πŸ’… s6-rc-bundle β€” the manual page, but make it make sense

okay so bestie, this is s6-rc-bundle from the System Manager's Manual section 8, and it's genuinely one of the more satisfying little tools once you get what it's doing: it lets you add or delete bundles from a compiled service database without having to recompile it from source. no cap. you just vibe in, tweak a bundle, and leave. πŸŽ€


✨ SYNOPSIS ✨

s6-rc-bundle help
s6-rc-bundle [-f] [-l live] [-c compiled] [-b] add bundlename
             contents...
s6-rc-bundle [-f] [-l live] [-c compiled] [-b] delete bundlenames...
s6-rc-bundle [-f] [-l live] [-c compiled] [-b] multiple args...

like, that's the whole shape of it. four moods. pick one. πŸ¦‹


🌸 DESCRIPTION 🌸

so s6-rc-bundle goes looking for a compiled service database in compiled β€” and by default, that's the database used by the live state in live. πŸ’–

depending on what you feed it, it will:

  • add a bundle definition to that database,
  • delete a bundle definition from it,
  • or do multiple additions and deletions in one go.

the big icon energy here: s6-rc-bundle is an offline tool. meaning you can run it on any compiled service database without even having a live set of services managed by s6-rc(8). it does not need the whole operation running. it's literally fine on its own. ✨

but β€” if you do have a live set, you can still run s6-rc-bundle on the current database (and that's the default, bestie), and it won't interfere with your normal service operation. it's giving considerate. 🫢


🧚 Subcommands

  • s6-rc-bundle help β€” prints a help message on stdout. that's it. that's the whole task. slay.
  • s6-rc-bundle add bundlename contents... β€” adds a bundle named bundlename to the database, representing the services listed in contents. and here's the detail you do NOT want to miss: the arguments in contents... are resolved before the database is modified by the s6-rc-bundle invocation. so it's not figuring things out halfway through and then changing stuff. the order is giving responsible. πŸ‘‘
  • s6-rc-bundle delete bundlenames... β€” deletes the bundles listed in bundlenames.... simple, clean, iconic.
  • s6-rc-bundle multiple args... β€” performs multiple bundle deletions and additions. and ngl, this subcommand is best used in an execline script, because it uses execline-block(7)s. that's the tea. πŸ“

args... is composed of:

  • One block listing bundle names that will be deleted from the database.
  • Zero or more addition definitions, each of them composed of:
    • One argument that is the name of the bundle to add.
    • One block listing the services contained in the new bundle. the names in the block are resolved before any addition or deletion is made to the database. ⭐

πŸ’… OPTIONS πŸ’…

  • -c compiled β€” operate on a compiled service database in compiled instead of the current live one. so you get to point it at exactly which database you mean. 🎯
  • -l live β€” assume the live state is in live. this option is ignored if the -c option has been given. default is /run/s6-rc. and the default can be changed at package compilation time, by giving the --livedir=live option to ./configure. iykyk. 🌈
  • -f β€” Force. s6-rc-bundle will not complain when given a nonexisting name to delete (it will do nothing), or when given an existing name to add (it will replace the definition). by default, s6-rc-bundle will complain and exit when asked to delete a nonexistent name or to add an existing name. so -f is the "yeah yeah i know, just do it" flag. πŸ’€
  • -b β€” Blocking lock. if the database is currently being used by another program, s6-rc-bundle will wait until that other program has released its lock on the database, then proceed. by default, s6-rc-bundle fails with an error message if the database is currently in use. so -b is the patient bestie and no--b is the impatient bestie. πŸ™ˆ

πŸ”₯ EXIT STATUS πŸ”₯

  • 0 β€” Success. we ate. πŸ‘‘
  • 1 β€” Identifier already exists in service database.
  • 3 β€” Identifier not found in service database.
  • 4 β€” Invalid or corrupted service database.
  • 5 β€” Wrong identifier type for the given command.
  • 100 β€” Wrong usage.
  • 111 β€” System call failed.
fr fr, memorize these β€” 1, 3, 4, 5, 100 and 111 all mean different flavors of "something's off", and knowing which one you got saves you so much time. 😭

πŸ¦‹ SEE ALSO πŸ¦‹

s6-rc-faq(7), s6-rc-overview(7), s6-rc-why(7), s6-rc(8), s6-rc-compile(8), s6-rc-db(8), s6-rc-dryrun(8), s6-rc-fdholder-filler(8), s6-rc-format-upgrade(8), s6-rc-init(8), s6-rc-oneshot-run(8), s6-rc-update(8)

also, for the record: this man page is ported from the authoritative documentation at https://skarnet.org/software/s6-rc/s6-rc-bundle.html β€” that's the source of truth, go give it a look. ⭐


πŸ’œ AUTHORS πŸ’œ

  • Laurent Bercot
  • Alexis <flexibeast@gmail.com> (man page port)

aaaand that's the page! 🫢 cute little sign-off for you: this one ships with Debian, dated April 6, 2023, and it lives in the System Manager's Manual β€” so when you see S6-RC-BUNDLE(8) at the top of your terminal, you now know exactly what's up. go forth and bundle responsibly, bestie. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from