无法为X11自动启动没有$ DISPLAY的dbus-daemon。 NetBeans的。 pi作为远程主机

问题描述:

我想用我的NetBeans IDE中运行下面的示例代码:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <dbus/dbus.h> 

int main() { 
    DBusConnection *connection = NULL; 
    DBusError error; 
    char buffer[1024]; 

    dbus_error_init(&error); 
    connection = dbus_bus_get(DBUS_BUS_SESSION, &error); 
    if (dbus_error_is_set(&error)) { 
     fprintf(stderr, "%s", error.message); 
     abort(); 
    } 

    puts("This is my unique name"); 
    puts(dbus_bus_get_unique_name(connection)); 
    fgets(buffer, sizeof(buffer), stdin); 

    return 0; 
} 

从优秀教程: DBUS TUTORIAL USING THE LOW-LEVEL API

我有我无头丕设置了SSH,并已安装的所有dbus开发所必需的库。

然而,在NetBeans中运行该程序时,我收到以下错误

无法的AutoLaunch一个DBUS守护进程没有$显示X11

在/ usr/bin中/ dbus-launch会异常与终止以下错误:Autolaunch错误:X11初始化失败。

注意,我在我的远程主机属性启用的NetBeans

X11转发我可以看到,如果我SSH到郫县自己和 回声$ DISPLAY 这个没有返回,是空的。

到目前为止,我曾尝试:

in /etc/ssh/sshd_config 
X11Forwarding yes 
X11DisplayOffset 10 
X11UseLocalhost no 
AllowTcpForwarding yes 

没有工作。

试运行环境变量设置为

DISPLAY export DISPLAY=$HOSTNAME:0.0 

0x212d0 "org.freedesktop.DBus.Error.Spawn.ExecFailed" 
0x21fe8 "/usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.\\n" 

没有工作。

试图

In /etc/ssh/ssh_config 
ForwardX11 yes 

没有工作。

这是一个让我的Pi设置为X11或配置我的netbeans环境来运行具有特定参数的程序的情况吗?

非常感谢您的任何建议。

更新2017年8月30日:

我做了一个新的安装debian的,随后吉尔的回答:

https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely ...

我可以确认:在 /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10。 ..

xauth安装在远程Pi上。

我在我的客户端mac上安装了XQuartz。当ssh -X pi @ IP地址,xquartz打开,并且如果我在遥控Pi上获得localhost:12.0 ...数字随每个终端而改变。

目前,如果错误地设置项目环境在NetBeans:

DISPLAY =本地主机:11.0(这是错误的,因为数量与每个ssh连接到远程丕变)。

因此,当我尝试运行该程序时,NetBeans将挂起,我也无法调试。

我在这个阶段的问题是,我如何正确地为NetBeans设置DISPLAY环境,以便每次它与远程Pi进行SSH连接并请求X11转发时,它将具有正确的$ DISPLAY?

自动启动dbus守护进程只在X11会话下才有效。否则它会被禁用,因为没有办法让不同的应用程序建立一个dbus守护进程的公共实例。

如果你想运行在你的PI盒独立X11的DBUS守护进程,你应该将其配置为启动时启动的DBUS守护进程,并在 DBUS_SESSION_BUS_ADDRESS环境变量导出总线地址。

欲了解更多信息请参阅https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690530

如果你想用你的远程X会话另一方面,你需要在你ssh到郫县解决您的错误配置的X11转发,使得显示环境变量的设置是否正确。参见例如https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely

+0

感谢您的回复。我已经在你提供的链接中跟随吉尔斯的回答。并在客户端mac上安装了XQuartz。请参阅我主要问题中的更新。我如何在NetBeans项目中正确设置$ DISPLAY环境,以便每次netbeans与远程Pi建立SSH连接时,它都能正确设置DISPLAY?非常感谢。 –

+0

@Dan_R如果您有新问题,请提出新问题。 –

+0

道歉,你是对的......我在这里提出了一个新的问题:[link](https://*.com/q/46043094/1315288) –

解决这个如下:

https://unix.stackexchange.com/a/12772

此外,确保XQuartz(X11客户端)在客户端计算机(在此情况下的MacOS)上运行。

我将确认这是否适用于在无头配置下运行的Pi(服务器)。