gpt4 book ai didi

macos - Xt 错误 : Can't open display, 如果使用默认显示

转载 作者:IT老高 更新时间:2023-10-28 12:44:56 28 4
gpt4 key购买 nike

概述

我正在尝试让 XQuartz 在 OSX 上工作,这样我就可以通过 Docker 进行 X11 转发。我关注 the instructions here .我相信我的问题可能只由第一部分回答,但为了以防万一(为了避免 XY 问题),我也提供了第二部分。

安装

我已经通过自制软件安装了它,通过 brew cask install xquartz。然后我 open -a XQuartz 启动它。

本地 xterms

测试一下,如果我尝试打开一个xterm,它不起作用:

MacBook-Pro:opencv-gui csaftoiu$ xterm
xterm: Xt error: Can't open display: /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 wheel 0B May 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
# opens xterm, waits for it to finish
$

以下内容不起作用,不知道为什么基于the answer here :

xterm: Xt error: Can't open display: localhost:0
MacBook-Pro:opencv-gui csaftoiu$ DISPLAY=127.0.0.1:0 xterm
xterm: Xt error: Can't open display: 127.0.0.1:0
MacBook-Pro:opencv-gui csaftoiu$ DISPLAY=`ipconfig getifaddr en0`:0 xterm
xterm: Xt error: Can't open display: 192.168.1.15:0

请注意,xinit 出于某种原因确实有效:

$ xinit

xinit: XFree86_VT property unexpectedly has 0 items instead of 1
# opens xterm, waits for it to finish
xinit: connection to X server lost

waiting for X server to shut down

问题 1:XQuartz 实际监听的是什么?


使用 socat 进行 Docker 转发

无论如何,继续前进,这个 socat 命令不起作用:

MacBook-Pro:opencv-gui csaftoiu$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

从另一个窗口运行它:

MacBook-Pro:opencv-gui csaftoiu$ docker run --rm -it -e DISPLAY=`ipconfig getifaddr en0`:0 ubuntu:14.04 bash
root@912eec31b8cb:/# apt-get update && apt-get install xterm
... such install, wow ...
root@912eec31b8cb:/# xterm
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning message cannot be safely formatted
in this environment. You may get a more descriptive message by running the
program as a non-root user or by removing the suid bit on the executable.
xterm: Xt error: Can't open display: %s
root@912eec31b8cb:/# echo $DISPLAY
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): Connection refused

我也不能使用有效的 DISPLAY 变量:

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): No such file or directory

现在,这不是 UNIX 客户端 IP。但是,我不知道 什么 DISPLAY=:0 正在连接。它肯定不是端口 6000,因为那是它曾经监听的端口。如果我将其更改为 6005,转发到 6000,并使 Docker 容器 DISPLAY 改为 $(ipconfig getifaddr en0):5,那么连接当然会被拒绝:

$ socat TCP-LISTEN:6005,reuseaddr,fork TCP:localhost:6000
2016/06/14 21:20:32 socat[25379] E connect(8, LEN=16 AF=2 127.0.0.1:6000, 16): Connection refused

问题2:如何从这里着手?

最佳答案

我重新安装 XQuartz 后没有重新启动。我重新启动,现在它可以工作了。 :)。

关于macos - Xt 错误 : Can't open display, 如果使用默认显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37826094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com