[Pkg-utopia-maintainers] Bug#833318: /etc/X11/Xsession.d/95dbus_update-activation-env: dbus-update-activation-environment --systemd always fails without dbus-user-session package installed
Mirosław Zalewski
miniopl at poczta.onet.pl
Tue Aug 2 21:29:55 UTC 2016
Package: dbus-x11
Version: 1.10.8-1
Severity: normal
File: /etc/X11/Xsession.d/95dbus_update-activation-env
Dear Maintainer,
`dbus-update-activation-environment --systemd` fails on systems without
dbus-user-session package installed. This limits usefulness of
`/etc/X11/Xsession.d/95dbus_update-activation-env` file and renders
comment there misleading.
* What led up to the situation?
I was trying to understand why `systemctl --user show-environment`
prints only very limited number of variables and why this happens:
#v+
dbus-update-activation-environment --all --systemd
dbus-update-activation-environment: warning: error sending to systemd: org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.freedesktop.systemd1 exited with status 1
#v-
* What exactly did you do (or not do) that was effective (or
ineffective)?
Comment in `/etc/X11/Xsession.d/95dbus_update-activation-env` says that
Xsession environment variables will be put in "systemd --user, if
running". Therefore, I expected all variables defined there to be
available in systemd user services. Since they were not, I thought that
maybe systemd --user starts only after dbus-launch, but that seems to
not be a case:
#v+
ps -o pid,user,args -C dbus-launch -C systemd
PID USER COMMAND
1 root /sbin/init
4079 sddm /lib/systemd/systemd --user
4090 sddm dbus-launch --autolaunch 60bcc674655243c8a520cc5813fe7172 --binary-syntax --close-stderr
4138 minio /lib/systemd/systemd --user
4200 minio /usr/bin/dbus-launch --exit-with-session --sh-syntax
#v-
After some search, I finally looked up `dbus-update-activation-environment`
source code. This error message comes from line 399, which handles
return value of dbus call to `org.freedesktop.systemd1` service on
connection defined as `dbus_bus_get (DBUS_BUS_SESSION, &error);`. I can
only assume that tool is trying to talk to systemd on session bus.
However, `org.freedesktop.systemd1` service is available only on system
bus (and seems to refer to system's systemd, not user instance) - not on
session bus. I can verify that by using `qdbusviewer` tool.
After installing `dbus-user-session` package, I can find
`org.freedesktop.systemd1` on session bus, `systemctl --user show-environment`
prints many variables and `dbus-update-activation-environment --all --systemd`
call does not print any error message.
* What outcome did you expect instead?
systemd --user instance to be populated with Xsession variables by
default, OR `/etc/X11/Xsession.d/95dbus_update-activation-env` file not
misleading me into thinking that systemd should have these variables
defined. Rephrasing comment to say that only dbus environment is
changed, and `dbus-user-session` must be installed for systemd --user
instance, would be very much appreciated.
-- System Information:
Debian Release: stretch/sid
APT prefers testing
APT policy: (990, 'testing'), (400, 'unstable'), (102, 'experimental'), (10, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=pl_PL.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to pl_PL.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages dbus-x11 depends on:
ii dbus 1.10.8-1
ii libc6 2.23-2
ii libdbus-1-3 1.10.8-1
ii libx11-6 2:1.6.3-1
dbus-x11 recommends no packages.
dbus-x11 suggests no packages.
-- no debconf information
More information about the Pkg-utopia-maintainers
mailing list