Git + libsecret 抛出“没有 X11 $DISPLAY 无法自动启动 D-Bus”

Posted

技术标签:

【中文标题】Git + libsecret 抛出“没有 X11 $DISPLAY 无法自动启动 D-Bus”【英文标题】:Git + libsecret throws "Cannot autolaunch D-Bus without X11 $DISPLAY" 【发布时间】:2019-05-06 18:37:10 【问题描述】:

我在 CentOS 7 服务器上安装了 Git 和 libsecret。我使用 git-credentials-store 将我的凭据以明文形式存储在服务器上。现在我想使用 libsecret,但不幸的是,如果我将 git-credential-libsecret 配置为凭证助手,我会遇到 D-Bus 错误。

我已经安装了 dbus 和 dbus-x11 并通过以下命令启动了 dbus,但我仍然遇到错误。

dbus-launch --sh-syntax

错误:

$ git pull origin master

** (process:66155): CRITICAL **: 08:19:33.936: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY

** (process:66160): CRITICAL **: 08:19:34.209: store failed: Cannot autolaunch D-Bus without X11 $DISPLAY

编辑:

安装 gnome-keyring 后出现以下错误

** 消息:14:10:49.566:来自秘密服务的远程错误:org.freedesktop.DBus.Error.UnknownMethod:路径 /org/freedesktop/ 的对象上没有此类接口“org.freedesktop.Secret.Collection”秘密/收藏/登录

【问题讨论】:

【参考方案1】:

您需要使用export $(dbus-launch) 来评估dbus-launch 输出的变量,以便在您的环境中设置$DBUS_SESSION_BUS_ADDRESS。另见:How to export DBUS_SESSION_BUS_ADDRESS

如果您的环境中未设置$DBUS_SESSION_BUS_ADDRESS,D-Bus 客户端库将假定没有dbus-daemon 正在运行,并将尝试自动启动一个。没有$DISPLAY,这是不可能的;因此您会看到错误消息。

【讨论】:

谢谢@Philip!现在我收到以下错误 ** (process:46160): CRITICAL **: lookup failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets is not provided by any 。服务文件 确保将文件org.freedesktop.secrets.service 安装到配置会话总线以查找服务的目录中。通常这是 /usr/share/dbus-1/services,但如果您使用自定义配置,可能会有所不同。我怀疑您已将 libsecret 安装在自定义前缀而不是系统范围内,这会导致此问题。您是否使用了发行版提供的 RPM? 感谢您的回答 :) 我没有在文件系统上找到该文件。我已经通过提供的 yum repos 安装了 libsecret。 它可能由gnome-keyring 包而不是libsecret 提供。它肯定在 Fedora 上。【参考方案2】:

您可以无头运行它,但您需要遵循 Python 密钥环包中的建议来“欺骗”它。

https://keyring.readthedocs.io/en/latest/#using-keyring-on-headless-linux-systems

【讨论】:

以上是关于Git + libsecret 抛出“没有 X11 $DISPLAY 无法自动启动 D-Bus”的主要内容,如果未能解决你的问题,请参考以下文章

使用 libsecret 我无法获得解锁项目的标签

“没有 X11 DISPLAY 变量” - 这是啥意思?

如何在没有 X11 的服务器上运行 R,并避免损坏的依赖关系

克隆 git 时 vagrant setup 抛出 Permission denied (publickey)

linux putty Xming中的问题

git clone android source code抛出error: invalid path 'luni/src/test/resources/org/apache/harmony/t