gpo.zugaina.org

Search Portage & Overlays:

sys-apps/openrc user services introduction - 04/09/2025 00:00 GMT

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.

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:

 ...
 # 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 [ -t 0 ] ; then
     # 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 [ -t 0 ] && [ -x /usr/bin/keychain ] ; then # GOOD
     keychain ...
 fi
 ...

(*) User services were originally in sys-apps/openrc-navi and later as
    part of >= OpenRC 0.62. The functionality was declared stable with 0.62.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


Posted By: Sam James