概述
我正试图让XQuartz在OSX上工作,这样我就可以通过Docker进行X11转发。我是按照这里的指示来做的。我相信我的问题可以用第一部分来回答,但为了以防万一(避免XY问题),我也提供了第二部分
装置
我已经通过自制、brew cask install xquartz安装了它。然后我打开一个XQuartz来启动它
本地xterms
测试它时,如果我尝试打开xterm,它将不起作用:
MacBook Pro:opencv gui csaftoiu$xterm
xterm:Xt错误:无法打开显示:/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
伪文件存在,但:
MacBook Pro:opencv gui csaftoiu$echo$DISPLAY
/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
MacBook Pro:opencv gui csaftoiu$ls-alh$DISPLAY
srw rw rw-1 csaftoiu车轮0B 5月6日21:12/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
我可以通过XQuartz打开xterm。然后:
bash-3.2$echo$DISPLAY
:0
此值也适用于常规OSX:
$DISPLAY=:0 xterm
#打开xterm,等待它完成
$
但以下方法不起作用,根据这里的答案,不确定原因:
xterm:Xt错误:无法打开显示:localhost:0
MacBook Pro:opencv gui csaftoiu$DISPLAY=127.0.0.1:0 xterm
xterm:Xt错误:无法打开显示:127.0.0.1:0
MacBook Pro:opencv gui csaftoiu$DISPLAY=`ipconfig getifaddr en0`:0 xterm
xterm:Xt错误:无法打开显示:192.168.1.15:0
请注意,xinit确实因为某些原因起作用:
$xinit
xinit:XFree86_VT属性意外包含0项而不是1项
#打开xterm,等待它完成
xinit:与X服务器的连接丢失
正在等待X服务器关闭
问题1:XQuartz实际上在听什么
Docker转发与socat
在任何情况下,继续,此socat命令不起作用:
MacBook Pro:opencv gui csaftoiu$socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\“$DISPLAY”
从另一个窗口运行时,我会:
MacBookPro:opencv gui csaftoiu$docker run--rm-it-e DISPLAY=`ipconfig getifaddr en0`:0 ubuntu:14.04 bash
[email protected]:/#apt获取更新&&;apt获取并安装xterm
... 这样的安装,哇。。。
[email protected]:/#xterm
警告:此程序是suid根程序或正由根用户运行。
无法安全格式化错误或警告消息的全文
在这种环境下。通过运行
以非root用户身份编程,或删除可执行文件上的suid位。
xterm:Xt错误:无法打开显示器:%s
[email protected]:/#echo$显示
192.168.1.15:0
从socat窗口,我得到:
2016/06/14 21:08:15 socat[24289]E connect(5,LEN=68 AF=1)/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0“,68):连接被拒绝
我也无法使用有效的显示变量:
MacBook Pro:opencv gui csaftoiu$socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\“:0”
2016/06/14 21:09:43 socat[24309]E connect(5,LEN=4 AF=1“:0”,4):没有这样的文件或目录
现在,这不是UNIX客户端IP。但是,我不知道连接到的是什么。它当然不是6000端口,因为它以前监听的是6000端口。如果我将其更改为6005,转发到6000,并使Docker容器显示为$(ipconfig getifaddr en0):5,则连接当然会被拒绝:
$socat TCP-LISTEN:6005,reuseaddr,fork-TCP:localhost:6000
2016/06/14 21:20:32 socat[25379]E连接(8,LEN=16 AF=2127.0.0.1:6000,16):连接被拒绝
问题2:如何从这里开始
重新安装XQuartz后,我没有重新启动。我重新启动了,现在它工作了。:)