Ошибка Xt: не удается открыть дисплей, если используется дисплей по умолчанию

обзор

я пытаюсь заставить XQuartz работать на OSX, чтобы я мог делать пересылку X11 через Docker. Я следую инструкции. Я считаю, что на мой вопрос можно ответить только первой частью, но на всякий случай (чтобы избежать проблемы XY), я также предоставил вторую часть.

установка

я установил его через homebrew, через brew cask install xquartz. Тогда Я ... --12--> запустить его.

местные 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

я можете откройте xterm через XQuartz. Затем:

bash-3.2$ echo $DISPLAY
:0

это значение работает и с обычной OSX:

$ DISPLAY=:0 xterm
# opens xterm, waits for it to finish
$

следующее не работает, хотя, не уверен, почему на основе ответ тут:

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

в любом случае, двигаясь дальше, это не работает:

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

С я:

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

я не могу использовать переменную отображения, которая работает:

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. Но я не знаю!--38-->что DISPLAY=:0 подключается. Это, конечно, не Порт 6000, так как это порт, который он использовал для прослушивания. Если я изменю его на 6005, направить 6000, и сделайте дисплей контейнера Докера $(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:как действовать дальше?

3 ответов


Я не перезапустился после повторной установки XQuartz. Я перезапустил, и теперь он работает. :).


Мне нужно было выйти из терминала, а затем перезапустить его, чтобы заставить его работать.


для OS X 10.6.3 и более поздних версий, per XQuartz 2.7.11 инструкции:

Если это ваша первая установка XQuartz, вы можете пожелать выйдите из системы и войдите обратно. Это обновит переменную среды отображения, чтобы указать на XQuartz.приложение, а не X11.приложение. Если вы предпочитаете использовать X11.app в качестве сервера по умолчанию (вы все еще можете запустить XQuartz.app вручную), вы хотите отключить / Библиотека / LaunchAgents / org.макосфордж.является XQuartz.команда startx.plist с помощью launchctl (1).

после установки XQuartz 2.7.11 на моем macOS High Sierra, выход из моего Mac и вход в систему снова было достаточно для этого, чтобы работать через мой терминал MacOS. Однако вы можете избежать необходимости выхода из системы и входа в систему, открыв приложение XQuartz Terminal (XQuartz > Приложения > Терминал) и запуск приложения X оттуда. Для пример:

enter image description here

а то

bash-3.2$ xclock &