Ulrich Müller <[email protected]> writes: >>>>>> On Wed, 03 Sep 2025, Sam James wrote: > >> +Title: sys-apps/openrc user services introduction >> +Author: Sam James <[email protected]> >> +Posted: 2025-09-03 >> +Revision: 1 >> +News-Item-Format: 2.0 >> +Display-If-Installed: sys-apps/openrc >> + >> +OpenRC 0.62 (*) introduces user services as a new feature. The functionality >> +is documented on the wiki [0] and has a similar interface to conventional >> +system-wide services. >> + >> +Support for user services is enabled by default via the pam_openrc module >> +in sys-auth/pambase, but it can be disabled via an OpenRC configuration >> +option as described below. >> + >> +Some ebuilds already provide OpenRC user service init scripts, like >> +app-editors/emacs. More will follow, but use of user services is optional. > > Technically, the user init script is installed by app-emacs/emacs-common. > (But not sure if we need that degree of accuracy here, it is of course > an unconditional dependency of app-editors/emacs.) > >> + >> +Requirements >> +============ >> + >> +User services currently require the XDG_RUNTIME_DIR environment variable to >> +be set, which may be done via sys-auth/elogind, sys-apps/systemd, or >> manually >> +via e.g. pam_env. In the future, pam_xdg may be packaged [1] as another >> option. >> + >> +If the XDG_RUNTIME_DIR environment variable isn't set and user services have >> +not been disabled, the setup will fail gracefully but will appear in syslog >> +and rc-update. >> + >> +Opting-out of user services >> +=========================== >> + >> +If users wish to disable OpenRC user services, they can set >> +`rc_autostart_user="NO"` in `/etc/rc.conf`: >> +``` > > News items are plain text, so "`" and "```" style quotes look out of > place IMHO.
I'll grant the `, but I'd say for the ``` block, I do that often on BZ even though it's plaintext. But I'll tweak it. > >> +# Set to "NO" if you don't want pam_openrc autostarting user services. This >> +# effectively disables the pam module, without the need of removing it from >> +# the pam configuration files. >> +rc_autostart_user="NO" >> +``` >> + >> +~/.profile and friends >> +====================== >> + >> +After stabilization, some users reported hangs when logging in [2]. None >> +were reported during the extensive period of testing in ~arch or by other >> +distributions who deployed newer versions of OpenRC. User services require >> +that `~/.profile`, `~/.bash_profile` run safely under a non-interactive >> +shell. >> + >> +Commands in these shell startup files may be executed by a non-interactive >> +shell so commands that require a TTY, reading from stdin, and so on should >> +be guarded with a check for TTY like: >> +``` >> +if tty >/dev/null 2>&1 ; then > > Is there any particular reason for calling an external command, instead > of [[ -t 0 ]] (or [ -t 0 ] if you want to stick to POSIX syntax)? I'll double check with navi that it definitely works, but it should. If so, will change. > >> + # Interactive commands here >> + ... >> +fi >> +``` >> + >> +Please make sure to check your shell startup files for suspicious constructs >> +like the following: >> +``` >> +if [ -x /usr/bin/keychain ] ; then # BAD >> + keychain ... >> +fi >> +``` >> + >> +... replacing them with: >> +``` >> +if tty >/dev/null 2>&1 && [ -x /usr/bin/keychain ] ; then # GOOD > > Ditto. ack > >> + keychain ... >> +fi >> +``` >> + >> +(*) User services were originally in sys-apps/openrc-navi and later as >> + part of >= OpenRC. > > Looks like a version (0.60 IIUC) is missing here? > >> + The functionality was declared stable with 0.62.x > > With x = 6? ack > >> + which was the first version with User Services stabled in Gentoo. >> + >> +[0] https://wiki.gentoo.org/wiki/OpenRC#User_services >> +[1] https://bugs.gentoo.org/908431 >> +[2] https://bugs.gentoo.org/962214
