我在 Arch Linux 上运行 systemd-231。
当我登录时,systemd 启动一个 dbus,但 gvfs 与该 dbus 交互似乎存在一些问题。如果我在终端中启动 dbus,新的 dbus 似乎工作正常。
» systemctl --user status dbus.service
● dbus.service - D-Bus User Message Bus
Loaded: loaded (/usr/lib/systemd/user/dbus.service; static; vendor preset: enabled)
Active: active (running) since Mon 2016-09-05 20:51:05 BST; 40min ago
Docs: man:dbus-daemon(1)
Main PID: 3188 (dbus-daemon)
CGroup: /user.slice/user-1034.slice/[email protected]/dbus.service
├─3188 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
└─3288 /usr/lib/GConf/gconfd-2
Sep 05 21:17:50 a-host dbus-daemon[3188]: Failed to activate service 'org.gtk.vfs.Daemon': timed out
Sep 05 21:17:50 a-host dbus-daemon[3188]: Failed to activate service'org.freedesktop.systemd1': timed out
对 gvfs 的调用似乎受到 gvfs-daemon 超时的影响。
例如
» gvfs-ls /tmp # long wait before output
(gvfs-ls:12745): GVFS-WARNING **: Error creating proxy: Error calling StartServiceByName for org.gtk.vfs.Daemon: Timeout was reached (g-io-error-quark, 24)
systemd-private-0c85dfd7446c421ba74be6bfb562fc0e-systemd-timesyncd.service-8EY8dZ
D-Bus 地址似乎设置正确:
» echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1034/bus
如果我在终端中启动 dbus,该 dbus 似乎能够激活各种 gvfs 服务,并且不会出现超时:
» eval `dbus-launch --sh-syntax`
» echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-iDDJAPUedN,guid=073a15321e1588b8db0a42f057cdd80d
» gvfs-ls /tmp # runs instantly
systemd-private-0c85dfd7446c421ba74be6bfb562fc0e-systemd-timesyncd.service-8EY8dZ
为什么 dbus 无法使用 systemd dbus 正确激活?
答案1
这是由于存在一个“插入”文件引起的,该文件覆盖了from的“标准”定义,特别是更改了/etc/systemd/system/[email protected]/dbus.conf
[email protected]
/usr/lib/systemd/system
DBUS_SESSION_BUS_ADDRESS
该插入文件是如何到达那里的仍然是个谜。据报道,pacman -Qo
它不属于任何软件包。我假设某个软件包添加了它,然后在后续更新中没有正确删除它。没有把握。
删除文件后,一切似乎都工作正常。/etc/systemd/system/[email protected]/dbus.conf