Xquartz перестал работать над Maverics. Невозможно установить действительную пересылку X11

1484
Werner

У меня проблемы с XQuartz на Mavericks. После того, как я обратился в службу поддержки Apple genius, чтобы заменить батарею (в которой гениальный парень отключил питание, когда у меня было открыто соединение X11), у меня возникает следующий сбой при попытке открыть XQuartz:

*** The application X11 could not be opened. *** An error occurred while starting the X11 server: "Cannot establish any listening sockets - Make sure an X server isn't already running" Click Quit to quit X11. Click Report to see more details or send a report to Apple. 

Я попытался сделать чистую установку XQuartz, выполнив:

launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz sudo pkgutil —forget org.macosforge.xquartz.pkg 

А затем установил последнюю версию XQuartz (на сегодняшний день именно эта ). Выход, вход в систему, безуспешно.

Я также попытался удалить /private/tmp/.X*файлы, /private/tmp/launch-*папки, которые содержали дисплеи xquartz, а также .Xauthorityфайл в $HOMEкаталоге.

Так как это не сработало, я изо всех сил пытался использовать port xorg-serverX11, используя sudo port install xorg-serverпосле удаления XQuartz. Я также должен был сделать его активным, используя launchctl load -w /Library/LaunchAgents/org.macports.startx.plist(найденный здесь ) и также использованный sudo port -f deactivate xinit && sudo port activate xinit(найденный здесь ).

К сожалению, это не сработало (я получил сообщение об ошибке на сервере, в котором говорилось, что у него нет прав на открытие $ DISPLAY на моей локальной машине).

Другие шаги в суперпользователе говорят о подобной проблеме:

  1. Вопрос о Маверикс, нет ответа на эту тему.
  2. Вопрос о снежном барде : мне нужно повторить это launchctl load -wснова, обращая внимание на sudoподсказку, о которой я не знал.

Я перепробовал все возможные комбинации и искал возможности в Интернете. Я мёртв в воде, ребята, есть идеи?

0
Я создал тикет на Xquartz: [2073] (http://xquartz.macosforge.org/trac/ticket/2073) Werner 9 лет назад 0

2 ответа на вопрос

2
Jeremy Huddleston Sequoia

As reported in ticket 589, this can happen due to bugs in your shell init scripts.

As reported in ticket 685, this can happen if you replace /usr/bin/mktemp with an incompatible version (eg: GNU mktemp).

Спасибо за ваш ответ (хотя это больше похоже на комментарий). Я следовал за 685 и с помощью созданного мной тикета ([2073] (http://xquartz.macosforge.org/trac/ticket/2073)) я обнаружил, что если я сделаю `-> sudo / usr / bin / mktemp -d / tmp / tempdir` Я получаю: `/ usr / bin / mktemp: слишком мало X в шаблоне '/ tmp / tempdir'`, тогда как моя система по умолчанию` mktemp`, которая `-> which mktemp `:` / sw / sbin / mktemp`, без ошибок: `-> sudo / sw / sbin / mktemp -d / tmp / tempdir`:` / tmp / tempdir` Werner 9 лет назад 0
Связывание `/ usr / bin / mktemp` с` / sw / sbin / mktemp` выглядело как решение проблемы открытия Xquartz. Однако у меня возникают проблемы с разрешениями: когда я захожу на сервер, который хочет открыть окно X11, я получаю сообщение: `connect /tmp/launch-zmVJjw/org.macports:0: В доступе отказано` Werner 9 лет назад 0
Хорошо, на самом деле `/ sw / sbin / mktemp` из порта xorg-server… Werner 9 лет назад 0
Как я упомяну в заявке, когда MacPorts снова подключится к сети, вы заменили системный mktemp на сторонний. Это вызвало проблему. Проблемы с разрешениями не связаны. / sw / sbin / mktemp НЕ из порта xorg-сервера. Вы установили это с помощью fink. Вероятно, проблема с perms связана с тем, что вы удалили порт xinit. Jeremy Huddleston Sequoia 9 лет назад 0
Понятно ... извините, я не знал, что `mktemp` должен был быть из` Xquartz` или из порта `xorg-server`. Но как мне заставить этот X11 работать? Werner 9 лет назад 0
/ usr / bin / mktemp предоставляется Apple в OS X. Вы заменили его сторонним двоичным файлом. Единственное, что я могу порекомендовать, это переустановить свою ОС, потому что вы ее испортили. Не заменяйте системные исполняемые файлы и библиотеки, если вы не понимаете последствий. В этом случае следствием замены / usr / bin / mktemp несовместимой версией стало то, что все, что полагается на нее (например, XQuartz), больше не работает. Jeremy Huddleston Sequoia 9 лет назад 0
Если вы хотите, вы можете просто заменить / usr / bin / mktemp на допустимую версию, но я понятия не имею, что еще вы заменили в / usr / bin несовместимыми версиями, поэтому безопаснее просто переустановить и убедиться, что Вы не повредите свою систему в будущем. Jeremy Huddleston Sequoia 9 лет назад 0
Я не заменил х). Я только что переместил его и создал ссылку на его место. После этого я создал ссылку на оригинальный системный файл, и вы предупредили меня, что я не могу этого сделать .... Werner 9 лет назад 0
Я не заменил ничего другого, я стараюсь следить за своими изменениями (особенно когда суду) так сильно, как могу. Werner 9 лет назад 0
Проблема, о которой вы сообщаете, была * вызвана * заменой / usr / bin / mktemp. Вы * позже * заменили его символической ссылкой на / sw / bin / mktemp, но версия, которая была там * до * вашей символической ссылки (версия с uuid C0FE4B3B-A5F2-35A6-A70F-8AD477BCA31C), не была поставляется с вашей ОС (то есть вы сделали что-то, чтобы заменить его версией не от Apple). Jeremy Huddleston Sequoia 9 лет назад 0
Я вижу ... извините за непонятое, ссылки на тот же файл меня запутали. Я хочу поблагодарить вас за помощь. Я попытаюсь использовать машину времени, чтобы вернуться к точке, где эта ошибка не произошла. Werner 9 лет назад 0
0
Werner

Today I had time to look again into this, and what is funny though is that I don't even needed to have the original mktemp available on /usr/bin/mktemp path (you shouldn't do this, this is only to illustrate that the previous discussion about the mktemp binary had nothing to do with the issue):

`--> ls /usr/bin/mktemp ls: cannot access /usr/bin/mktemp: No such file or directory 

my issue was probably the installation of port xquartz together with the original xquartz. I made a complete uninstall on both clients:

sudo port uninstall xinit xorg-server 

And for the "original" xquartz (info here, look for "Uninstall (Snow Leopard or Later)"):

launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz sudo pkgutil --forget org.macosforge.xquartz.pkg 

Some of those may fail since the port uninstallation may deactivate those, you can ignore those fails.

This is important. In my previous attempts, I was failing probably because I wouldn't restart my account, which seems that is needed in order to the launchctl to make effect (I might be wrong over here, but anyway, it is important for you to logout and login your account for the installation changes to take effect).

With the clean environment, now install the XQuartz, log-out, log-in and it should work. If not, take a look in the following debug instructions from XQuartz, look for "ssh X forwarding debugging":

[1] local $ echo $DISPLAY /tmp/launch-Bh0fLm/:0 [2] local $ grep DISPLAY ~/.*rc ~/.login ~/.*profile ~/.MacOSX/environment.plist 2>/dev/null [3] local $ grep -r DISPLAY /opt/local/etc /sw/etc /etc 2>/dev/null [4] local $ ssh -Y remote Warning: No xauth data; using fake authentication data for X11 forwarding. [5] remote $ echo $DISPLAY localhost:10.0 [6] remote $ grep X11 /etc/ssh/sshd_config ~/.ssh/* X11Forwarding yes X11DisplayOffset 10 

My issue started on the first line, where the DISPLAY variable was empty. I would run commands 2 and 3, and there was nothing changing it, so I new there the problem was something with the launchtcl, and had nothing to do with steps 4 and afterwards. But your case could be different, so follow this debug instructions to check what your problem may be.