linux 客户端无法连接到D-BUS守护程序,无法连接到套接字/tmp/dbus-< something>:连接被拒绝

w8rqjzmb  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(262)

我经常看到标题中列出的错误。
我使用的是Linux Mint,有几个不同的版本(准确地说是18.3和21.1)。
我从命令行在虚拟机上运行应用程序(如果重要的话,在Hyper-V下),实际上是从不同机器(瘦客户机)上的X服务器驱动它们。我启动VM,它启动X-Windows,然后使用sudo终止lightdm(它终止X-Windows以保存资源)。然后,我以文本模式登录,并从命令行运行xterm,将display变量指向瘦客户机。这为我的瘦客户机提供了一个xterm窗口,我可以在其中运行VM上的应用程序,并在瘦客户机上与它们交互。
但我经常收到这个错误消息。一整天gvim,firefox,chromium,你能想到的都有。
如果我在VM中运行X-Windows并从命令行运行应用程序,我不会得到此错误。只有当我在文本模式下运行VM并在瘦客户机上使用X-Windows时才会发生这种情况。
这些应用程序还在工作。他们的行为(大部分)正常。但我每次都收到这个错误信息。
当运行gvim时,我总是得到这样的消息,并且我得到一个额外的弹出窗口,说“加载或保存gvim的配置信息时出错。你的一些配置设置可能无法正常工作。”我没有注意到gvim的行为有任何异常。但不得不杀死弹出所有的时间是一种痛苦。我在任何一天都会使用gvim几十次。我每次都得到错误和弹出窗口。
此外,当我以这种方式启动 chrome 时,它无法记住我的任何用户名和密码(不是完全正常的操作)。
我一直在寻找这个错误消息的所有其他条目。我试过各种方法,但没有一种能解决我的问题。
是,已安装dbusdbus-x11
运行dbus-launch会给我一些状态信息,但没有效果。
如果我运行service dbus status,它告诉我它是活动的。运行service dbus start要求输入密码(就好像我在sudo下做什么)来启动“dbus.socket”和“dbus.service”,但之后我仍然得到错误,所以这些似乎没有完成任何事情。
虽然我使用sudo来杀死lightdm,但我不使用sudo做其他任何事情。我在VM中有一个用户帐户,我用它登录(在文本模式下),启动xterm并运行所有应用程序。所以这不应该是烫发的问题。
建议还有什么可以尝试的?这是,大多数情况下,一个烦恼,但我想让我的配置到一个点,这是不是一个问题。

rggaifut

rggaifut1#

将xterm作为dbus-launch的 * 子项 * 运行:

dbus-launch [--exit-with-session] xterm &         (older)

个字符
或者:
如果Mint与Debian类似-安装dbus-user-session包,这将导致会话总线始终在固定位置启动,用于所有登录类型(包括文本控制台和SSH登录)。“用户”总线将通过“用户服务”进行控制:

systemctl --user status dbus


(Note- 由于“用户”总线继续独立于X显示器存在,因此在切换$DISPLAY之后,您需要运行:

dbus-update-activation-environment --systemd DISPLAY


将环境重新导入到正在运行的dbus-daemonsystemd --user进程。)
运行dbus-launch会提供一些状态信息,但没有任何效果。
您没有注意到的是dbus-launch在后台启动一个dbus-daemon示例;“状态信息”是你的应用程序应该连接到的总线的地址。输出是要被eval'd的,这样新的DBUS_SESSION_BUS_ADDRESS将替换当前在您的环境中(或在~/.dbus缓存的“autolaunch”数据中)的旧的。
与ssh-agent非常相似,如果您不指定要运行的“child”命令,则用法将是:

eval "$(dbus-launch)"


除非添加--exit-with-x11--exit-with-session,否则这种用法往往会使陈旧的dbus-daemon进程延迟。
如果我在虚拟机中运行X-Windows并从命令行运行应用程序,我不会得到此错误
您不会得到此错误,因为图形会话在登录期间运行了dbus-launch(可能是dbus-x11脚本的一部分),并在环境中放置了正确的DBUS_SESSION_BUS_ADDRESS。终止X服务器会导致dbus-launch终止dbus-daemon,因此该地址不再有任何侦听。
如果我运行service dbus status,它告诉我它是活动的。
坐错车了。dbus.service代表全局“系统”总线;您的错误消息正在寻找每个用户的“会话”总线。

相关问题