Arch-Linux
為什麼帶有 systemd dbus 的 gvfs 會超時?
我在 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/user@1034.service/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 正確啟動?
這是由於存在
/etc/systemd/system/user@.service.d/dbus.conf
覆蓋user@.service
from的“標準”定義的“插入式”文件,/usr/lib/systemd/system
特別是更改了DBUS_SESSION_BUS_ADDRESS
該插入文件是如何到達那裡的仍然是一個謎。根據
pacman -Qo
它不屬於任何包裹。我假設某些軟體包添加了它,然後在後續更新中沒有正確刪除它。沒有把握。刪除
/etc/systemd/system/user@.service.d/dbus.conf
文件後,一切似乎都正常。