これは初心者の質問だとはわかっていますが、調べてみたところ、イライラしてきました。Lunux の使い方はよくわかっていますが、XServer を扱ったことはありません。
質問1:
OSX から UBUNTU 14.04 デスクトップ マシンにユーザー alpha として SSH 接続します。
ユーザー alpha もそのデスクトップにローカルにログインしています。
UBUNTU マシンに表示されるアプリケーションを (ターミナル経由で) 実行したい (ローカルにログインしたユーザーのローカル ディスプレイに表示されるように)。
今日、OSX ターミナルからこれを実行すると、次のエラーが発生します。
15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>
注: ローカル ターミナル (UBUNTU 上) から実行すると、正常に動作するので、プログラムに問題はありません。
質問2:
UBUNTU マシンがヘッドレスの場合、ウィンドウを別のマシン (たとえば Mac) に転送するにはどうすればよいでしょうか?
ありがとうピーター
答え1
2 番目の質問については、SSH で接続するときに -X (または信頼できる接続の場合は -Y) パラメータを追加し、Mac に X11 がインストールされていることを確認してください。例:
ssh -X [email protected]
これにより、X11 ウィンドウが Mac 上のローカル X サーバーに表示されるようになります。
見る:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html
最初の質問について:
表示と権限
X プログラムが X ディスプレイに接続するために 2 つの情報が必要です。
ディスプレイのアドレスが必要です。これは通常、ローカルでログインしている場合は :0、リモートでログインしている場合は :10、:11 などです (ただし、アクティブな X 接続の数に応じて番号が変わることがあります)。ディスプレイのアドレスは通常、DISPLAY 環境変数で示されます。
ディスプレイのパスワードが必要です。X ディスプレイのパスワードはマジック クッキーと呼ばれます。マジック クッキーは直接指定されません。常に X 権限ファイルに保存されます。X 権限ファイルは、「ディスプレイ:42 にはクッキー 123456 があります」という形式のレコードのコレクションです。X 権限ファイルは通常、XAUTHORITY 環境変数で示されます。$XAUTHORITY が設定されていない場合、プログラムは ~/.Xauthority を使用します。
抜粋元: https://unix.stackexchange.com/a/10126
素晴らしい説明についてはその投稿を参照してください。
答え2
リモートでは、DISPLAY 環境変数をエクスポートして、使用するディスプレイを設定する必要があります。
例えば。export DISPLAY=:0
2 番目の質問については、最も簡単な方法は、Ubuntu に VNC サーバーをセットアップし、VNC クライアントを使用して Mac から接続することです。
方法:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
答え3
1) よく分かりませんが、試してみるといいかもしれませんexport DISPLAY=0
。
2) 使用しているマシンで GUI を表示するには、-Y
オプションを指定して SSH を実行します。