Я установил XQuartz на свой Mac (Big Sur, версия 11.5.2), используя загрузку, доступную на https://www. xquartz.org/ (XQuartz-2.8.1.dmg), но мне не удалось его использовать. Я не мог решить эту проблему в течение последних нескольких недель, и я действительно надеюсь, что кто-то может помочь мне указать правильное направление.

Я использовал xeyes для проверки установки и получил следующий ответ:

(base) magnoliafork ~ % xeyes                            
Error: Can't open display: :0.0
(base) magnoliafork ~ % echo "$DISPLAY"
:0.0

Один из способов, которым я пытался исправить это, - установить мой DISPLAY внутри моего файла .zshrc на :0, localhost=0 и просто номер 0 . Я также пытался поставить свой IP-адрес перед :0.0 в какой-то момент. Ни одно из этих решений не сработало.

##### DISPLAY, for plotting
PATH="/opt/:$PATH"
export DISPLAY
DISPLAY=":0.0"

Кто-то в другой теме рекомендовал изменить параметры по умолчанию в файле sshd_config, поэтому я обновил параметры X11, как показано ниже:

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
X11UseForwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

Это все еще не работает, и я подозреваю, что предыдущее решение заключалось в том, чтобы исправить случай, когда вы можете заставить XQuartz работать локально, но не через ssh. Я даже не могу заставить его работать локально, и на данный момент я понятия не имею, что делать дальше. Любые идеи будут действительно полезны!

Не знаю, полезно ли это, но я скопировал это из своей консоли:

X11.app: do_start_x11_server(): argc=7
     argv[0] = /opt/X11/bin/Xquartz
     argv[1] = :0
     argv[2] = -nolisten
     argv[3] = tcp
     argv[4] = -iglx
     argv[5] = -auth
     argv[6] = /Users/magnoliafork/.serverauth.2211

Дополнительная информация для комментариев:

  • Когда я запускаю xeyes с терминала Apple, значок XQuartz не появляется.
  • Если я попытаюсь запустить XQuartz непосредственно с терминала Apple с помощью команды xquartz, появится значок XQuartz, а затем я получу отчет о проблеме от Apple, в котором говорится: «Не удается установить прослушивающие сокеты. Убедитесь, что X-сервер еще не работает"
  • Я могу запускать xeyes из терминала XQuartz «xterm», но я бы предпочел терминал Apple, так как он более функционален.
1
magnoliafork 7 Сен 2021 в 18:06
Попробуйте ввести xhost + перед запуском xeyes
 – 
Greenonline
3 Сен 2021 в 06:38
(1) Пожалуйста, обновите вопрос и опишите, как вы установили XQuartz. (На моем Mac я использовал доморощенный, и он работает прямо из коробки). (2) XQuartz действительно работает? (Вы должны увидеть значок в документе). (3) :0.0 и :0 одинаковы, и если xeyes уже использует его, его установка не поможет. (4) Мой DISPLAY на самом деле установлен на /private/tmp/com.apple.launchd.K3RIGC7Bk3/org.macosforge.xquartz:0, поэтому, возможно, вам нужен полный путь к сокету (я никогда не исследовал, потому что у меня он работает из коробки).
 – 
dirkt
3 Сен 2021 в 11:25
В дополнение к комментарию dirkt, пункт (2), при открытии Xquartz терминал появляется? Вы пытаетесь запустить xeyes из этого терминала (в Xquartz) или из стандартного терминального приложения (из папки Utilities)? Если вы отредактируете свой вопрос и добавите снимок экрана, на котором вы пытаетесь запустить xeyes (и получающиеся ошибки)) изнутри Xquartz, это может помочь прояснить проблему.
 – 
Greenonline
3 Сен 2021 в 20:46
Когда я пытаюсь это сделать, я получаю эту ошибку: xhost: unable to open display ":0.0"
 – 
magnoliafork
7 Сен 2021 в 17:52
1
Попробуйте следующее: Откройте xterm, проверьте, работает ли xeyes. Сделайте echo $DISPLAY в этом xterm, отредактируйте вопрос со значением. Откройте терминал Apple, выполните export DISPLAY=... с предыдущим значением. Затем попробуйте запустить xeyes в терминале Apple.
 – 
dirkt
7 Сен 2021 в 19:12

1 ответ

Лучший ответ

Примечание. В попытке четко разграничить Finder (и связанные с ним приложения) и двоичные файлы, запускаемые из терминала, я использую жирный и code formatting соответственно.


Похоже, у вас две проблемы:

  • Запуск установки XQuartz из терминала
  • Правильная настройка DISPLAY

Первая проблема заключается в том, что вы установили XQuartz с помощью .dmg, а не через brew, и установили в Finder. Это означает, что вам нужно запустить его либо через Finder, либо в командной строке с помощью

$ /Applications/Utilities/XQuartz.app/Contents/MacOS/X11 &

Примечание. Моя версия XQuartz была также установлена ​​через .dmg, и, возможно, из-за этого у меня нет команды xquartz доступен для запуска XQuartz через терминал — отсюда и использование двоичного файла X11 из пакета приложений XQuartz.


Теперь кажется, что вы пытаетесь запустить xeyes из экземпляра приложения Terminal, а не из xterm, работающего внутри XQuartz, решение довольно простое.

Вам необходимо получить DISPLAY вашего XQuartz и назначить его DISPLAY вашего приложения Terminal.

Сначала запустите XQuartz либо из Finder, либо с помощью командной строки, указанной выше.

В xterm введите XQuartz

echo $DISPLAY

Это должно дать вам что-то вроде

bash-3.2$ echo $DISPLAY
/private/tmp/com.apple.launchd.8cSMuyvAKe/org.macosforge.xquartz:0
bash-3.2$ 

Теперь в Терминале введите (подставив ваше полное значение DISPLAY)

$ export DISPLAY=/private/tmp/com.apple.launchd.8cSMuyvAKe/org.macosforge.xquartz:0

А потом

$ xeyes

А затем xeyes должен появиться в сеансе XQuartz.


Обратите внимание, что это работает на XQuartz 2.7.11, работающем на High Sierra 10.13.6. У вас может быть конкретная проблема с Big Sur.

1
Greenonline 8 Сен 2021 в 23:18
В xterm я получаю следующее, то же самое, что и в терминале Apple. (base) magnoliafork ~ % echo $DISPLAY :0.0 Я использовал dmg для установки на свой последний MacBook, и он работал как чемпион. Что-то странное происходит с моим новым MacBook. Моя интуиция подсказывает мне, что это как-то связано с прослушиванием, но я недостаточно знаю о XQuartz, чтобы возиться с этими настройками.
 – 
magnoliafork
8 Сен 2021 в 22:43
Я установил свой XQuartz, используя .dmg — извините, я не ясно дал понять. Одна вещь, которую я не могу понять, это почему вы получаете % echo $DISPLAY :0.0. Если вы введете echo $DISPLAY, вы должны получить что-то отличное от :0.0 (т. е. предыдущее имя дисплея). Также возвращаемое значение должно быть в следующей строке, поэтому я не могу понять, почему :0.0 находится в той же строке, что и команда echo $DISPLAY. Проблема в том, что, поскольку я не могу воспроизвести проблему, которая у вас возникла, я не могу ее решить, я думаю.
 – 
Greenonline
8 Сен 2021 в 22:50
1
Значение было на следующей строке, но поле комментария убрало возврат. То, что вы упомянули в верхней части своего ответа, действительно сработало для меня (просто запустив XQuartz из терминального приложения). Я попробовал вашу команду, и тогда я смог заставить работать xeyes и другую мою программу. Это не решает проблему с корнем, но я написал для него псевдоним в своем файле .zshrc («openXQuartz»). Сейчас я наберу псевдоним, а затем продолжу свою работу. Спасибо!!
 – 
magnoliafork
8 Сен 2021 в 22:55
1
Ах хорошо, я рад, что у вас есть обходной путь. Кстати, вам действительно следует опубликовать свое окончательное решение в качестве ответа по нескольким причинам: (1) Чтобы помочь другим с той же проблемой легче найти решение / обходной путь, чем читать наши комментарии (которые немного назад - и так далее, пока мы работали над решением), и (2) комментарии носят эфемерный характер и со временем удаляются. И последнее, немного интригует то, что xquartz ведет себя иначе, чем двоичный файл X11. Я не могу это проверить, так как у меня нет доступной команды xquartz.
 – 
Greenonline
8 Сен 2021 в 23:21