Muszę uruchomić program na komputerze Mac zdalnie za pośrednictwem ssh z komputera z systemem Linux. Zabawne jest to, że program ma interfejs wiersza poleceń, ale zawsze tworzy okno GUI, nawet jeśli nie jest to konieczne. Ponieważ loguję się z komputera z systemem Linux, pojawia się następujący błąd:
<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
Czy mogę w jakiś sposób sprawić, że pomyśli, że łączy się z WindowServer na komputerze Mac? (znowu nie muszę widzieć tego okna)
ssh
polecenie? Spróbuj usunąć-x
opcje.Odpowiedzi:
Źle zdiagnozowałeś problem: sądząc po komunikacie o błędzie, program próbuje otworzyć okno na konsoli Mac, do którego nie ma prawa dostępu, ponieważ nie siedzisz przy klawiaturze (wyobraź sobie, że ktoś inny jest i nagle pojawia się okno).
Linux działa pod kontrolą X11, na komputerze Mac działa system Windows Server (chyba że skonfigurowałeś również X11). Jeśli uruchomisz emacsa w terminalu ssh, może się on pojawić w oknie twojego Linux-a przy pomocy zmiennej środowiskowej DISPLAY.
Ale twój program tego nie robi. Być może tak będzie, jeśli odpowiednio zdefiniujesz zmienną WYŚWIETLACZ. Ssh może to zautomatyzować za pomocą opcji -X. Będziesz wiedział, że jest skonfigurowany, gdy możesz tworzyć zwykłe programy X, takie jak emacs lub xterm, wyskakujące okno na twoim pudełku. Jeśli musisz uruchomić program GUI zdalnie, jest to jedyny sposób, aby to zrobić.
Ale ponieważ mówisz, że tak naprawdę nie potrzebujesz GUI: przeczytaj dokumentację swojego programu i dowiedz się, czy istnieje opcja wiersza poleceń, która ją pomija.
źródło