Мне нужно запустить программу на Mac удаленно через SSH с Linux-машины. Самое смешное в программе то, что она имеет интерфейс командной строки, но она всегда создает окно с графическим интерфейсом, даже если в этом нет необходимости. Поскольку я вхожу в систему с компьютера Linux, я получаю следующую ошибку:

<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer,
_CGSDefaultConnection() is NULL.
couldn't allocate new Mac window

Можно ли как-то заставить его думать, что он подключается к WindowServer на Mac? (опять же, мне не нужно видеть это окно)

1 ответ1

2

Вы ошиблись в диагностике проблемы: судя по сообщению об ошибке, программа пытается открыть окно на консоли Mac, к которому она не имеет права доступа, потому что вы не сидите за клавиатурой (представьте, если кто-то еще есть, и вдруг всплывает окно).

Linux работает под управлением X11, ваш Mac работает под управлением Windows Server (если только вы не настроили X11). Если вы запустите emacs в вашем ssh-терминале, возможно, вам удастся открыть окно на вашем Linux-окне с помощью переменной окружения DISPLAY.

Но ваша программа этого не делает. Возможно, так и будет, если вы определите переменную DISPLAY соответствующим образом. Ssh может автоматизировать это с опцией -X. Вы будете знать, что он настроен правильно, когда вы можете заставить обычные X-программы, такие как emacs или xterm, открывать окно на вашем компьютере. Если вам нужно запустить программу с графическим интерфейсом удаленно, это единственный способ сделать это.

Но поскольку вы говорите, что вам на самом деле не нужен графический интерфейс: прочтите документацию к вашей программе и выясните, есть ли параметр командной строки, который ее подавляет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .