これは初心者の質問です、私は知っています...しかし、私は検索しました、そして私はイライラしています。 Lunuxの使い方はよく知っていますが、XServerを扱う必要はありませんでした。
質問1:
OSXからユーザーアルファとしてUBUNTU14.04デスクトップマシンにSSHで接続します。
ユーザーアルファもそのデスクトップにローカルでログインしています。
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に転送するにはどうすればよいですか?
ありがとうピーター
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
最初の質問の場合:
DISPLAY and AUTHORITY
Xプログラムは、Xディスプレイに接続するために2つの情報を必要とします。
ディスプレイのアドレスが必要です。通常、ローカルでログインしている場合は:0、リモートでログインしている場合は:10、:11などです(ただし、アクティブなX接続の数によって数が変わる可能性があります) )。ディスプレイのアドレスは通常、DISPLAY環境変数に示されます。
表示にはパスワードが必要です。 Xディスプレイのパスワードはマジッククッキーと呼ばれます。マジッククッキーは直接指定されません。それらは常にX典拠ファイルに保存されます。これは、「display:42 hascookie123456」という形式のレコードのコレクションです。 X典拠ファイルは通常、XAUTHORITY環境変数で示されます。 $ XAUTHORITYが設定されていない場合、プログラムは〜/ .Xauthorityを使用します。
抽出元: https://unix.stackexchange.com/a/10126
優れた説明については、その投稿を参照してください。
リモートでは、DISPLAY環境変数をエクスポートして、使用するディスプレイを設定する必要があります。
例えば。 export DISPLAY=:0
2番目の質問の場合、最も簡単な方法は、ubuntuでVNCサーバーをセットアップし、VNCクライアントを使用してMacから接続することです。
ハウツー: http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
1)わからない、多分export DISPLAY=0
を試してみてください?
2)使用しているマシンでGUIを表示するには、-Y
オプションを指定してSSHを実行します。