supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: "Hoël Bézier" <hoelbezier@riseup.net>
To: supervision <supervision@list.skarnet.org>,
	skaware <skaware@list.skarnet.org>
Subject: Re: s6-rc user services on Gentoo
Date: Tue, 2 Apr 2024 12:44:10 +0200	[thread overview]
Message-ID: <Zgvhe5mUxvJpX69a@sparta> (raw)
In-Reply-To: <87jzlgnzoh.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5160 bytes --]

Hi,

(resending this to the list as I only replied to Alexis, sorry Alexis for the 
double send.)

Am Tue, Apr 02, 2024 at 03:42:06PM +1100 schrieb Alexis:
>
>Hi all,
>
>Laurent has suggested i ask on IRC about this, but since (a) i'm
>in UTC+10, (b) i'm constantly moving between a few different
>networks, and (c) my bouncer is currently out of action (it's a
>Story), i thought i'd ask on these lists instead, to facilitate
>asynchronous replies. :-)

I feel you. IRC without bouncer is not always great for getting help on some 
topics. ^^’

> [snip]
>
>i've had a lot on my plate for a while, but in more recent times
>i've had a bit more space to faff around with lower-priority
>stuff, and so i'm exploring setting up s6-rc to manage the user
>services i need. Once i've done so, i can:
>
>* write a guide on the Gentoo wiki[a]; and
>
>* provide service definitions for others to use via my personal
>  overlay[b].
>
>which might help more people to become familiar with the s6
>ecosystem in general, and with s6-rc in particular (rather than
>trying to use s6 for service management as well as supervision).

Are you planning on having your user services supervisor itself supervised? And 
if so, by OpenRC or another instance of s6-svscan? Just asking out of 
curiosity.

>However, i've reached an impasse, and i'm hoping some can tell me
>what i'm missing / what i'm doing wrong / what i'm
>misunderstanding.
>
> [snip]
>
>* SCANDIR="${XDG_DATA_HOME}/s6-rc/services"
>
>* The above directory contains symlinks to
>
>  ${S6RC_SERVICE_REPO}/{dbus-session-bus,dbus-session-bus-log}
>
>* S6RC_COMPILED="${XDG_STATE_HOME}/s6-rc/compiled"
>
>* Running:
>
>  s6-rc-compile "${S6RC_COMPILED}" "${SCANDIR}"
>
>  completes successfully.
>
>* Running
>
>  s6-svscan -- "${SCANDIR}"
>
>  succeeds, with two s6-supervise processes created.
>
>* HOWEVER, running
>
>  s6-rc-init -c "${S6RC_COMPILED}" -l "${XDG_RUNTIME_DIR}/s6-rc"
>  "${SCANDIR}"
>
>  fails, with the error message:
>
>  unable to supervise service directories in
>  /run/user/1000/s6-rc/servicedirs: File exists

Your scandir and your service definitions are the same directory, which they 
should not be.

You currently have:
* service_definitions="${xdg_data_home}/s6-rc/services"
* compiled_services="${xdg_state_home}/s6-rc/compiled"
* scandir="${xdg_data_home}/s6-rc/services"
* livedir="${xdg_runtime_dir}/s6-rc"

However service definitions can not be used as a scandir: if your services are 
to be managed by s6-rc they should not be present at start in your scandir but 
should be added there by s6-rc-init.

That’s why s6-rc-init complains about files already existing: it tries to 
create a symlink in the scandir pointing to the services it’s managing but it 
can’t because the service are already present in the scandir.

Moreover, had you had any oneshots in your service definition directory, I 
think s6-svscan would have simply failed to start, or complained about 
directories containing no service (oneshots are not supervised by s6-svscan, 
because there’s nothing to supervise in them, so it doesn’t know about them).

What you should have is:
* service_definitions="${xdg_data_home}/s6-rc/services"
* compiled_services="${xdg_state_home}/s6-rc/compiled"
* scandir="${xdg_runtime_dir}/services"
* livedir="${xdg_runtime_dir}/s6-rc"

Your scandir should be in your runtime dir because it does not contain data but 
the current running configuration of your system. It can be an empty directory 
when you start s6-svscan, there is nothing wrong with that. s6-rc will populate 
it according to the compiled services you feed him.

>i've taken a look at s6rc_livedir_create.c:
>
>  https://git.skarnet.org/cgi-bin/cgit.cgi/s6-rc/tree/src/libs6rc/s6rc_livedir_create.c
>
>but nothing is leaping out to me as explaining what's happening.
>
>Thoughts?
>
>
>Alexis.
>
>[a] The current s6 and s6-rc pages on the wiki have lot of detail,
>without any "quickstart" tutorials that might make it easy for
>people to get on board. A while ago i did a big restructure of the
>s6 article:
>
>   https://wiki.gentoo.org/wiki/User:Flexibeast/drafts/S6
>
>which i feel improves the current page:
>
>   https://wiki.gentoo.org/wiki/S6
>
>but which has been awaiting review by a more senior wiki editor
>than me.
>
>The s6-rc page is similarly detailed and similarly lacking a
>"quickstart":
>
>   https://wiki.gentoo.org/wiki/S6-rc

Yeah, these definitely don’t help as much as they should, it’s a good thing 
someone decides on improving them, thanks for that. :)

>[b] Various people are providing s6 service definitions,
>e.g. https://codeberg.org/alecStewart1/gentoo-s6-scripts, but i'm
>not
>currently aware of any providing s6-rc service definitions -
>pointers welcome. :-)

You can see my own outdated s6-rc system service definitions at:
* https://forge.dotslashplay.it/s6-rc/system-services
and my (also outdated) s6-rc user tree service definitions at:
* https://forge.dotslashplay.it/s6-rc/personal-services

Hoël

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2024-04-02 10:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02  4:42 Alexis
2024-04-02 10:44 ` Hoël Bézier [this message]
2024-04-02 23:44   ` Alexis
2024-04-02 20:57 ` Guillermo
2024-04-03  0:12   ` Alexis
2024-04-03 11:37   ` Laurent Bercot
2024-04-06 12:43     ` Guillermo
2024-04-06 13:57       ` Laurent Bercot
2024-04-06 15:57       ` Muhammad Mahendra Subrata
2024-04-06 18:31         ` Laurent Bercot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zgvhe5mUxvJpX69a@sparta \
    --to=hoelbezier@riseup.net \
    --cc=skaware@list.skarnet.org \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).