>>>>> 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.

> +# 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)?

> +    # 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.

> +        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?

> +    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

Attachment: signature.asc
Description: PGP signature

Reply via email to