为什么 gvfs 与 systemd dbus 超时?

为什么 gvfs 与 systemd dbus 超时?

我在 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/systemDBUS_SESSION_BUS_ADDRESS

该插入文件是如何到达那里的仍然是个谜。据报道,pacman -Qo它不属于任何软件包。我假设某个软件包添加了它,然后在后续更新中没有正确删除它。没有把握。

删除文件后,一切似乎都工作正常。/etc/systemd/system/[email protected]/dbus.conf

相关内容