web-dev-qa-db-ja.com

GUIがローカルに表示されるように、アプリケーションをリモートで起動する方法

これは初心者の質問です、私は知っています...しかし、私は検索しました、そして私はイライラしています。 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に転送するにはどうすればよいですか?

ありがとうピーター

3
Peter Andersson

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

優れた説明については、その投稿を参照してください。

4
Marcelo

リモートでは、DISPLAY環境変数をエクスポートして、使用するディスプレイを設定する必要があります。

例えば。 export DISPLAY=:0

2番目の質問の場合、最も簡単な方法は、ubuntuでVNCサーバーをセットアップし、VNCクライアントを使用してMacから接続することです。

ハウツー: http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04

1
kmac

1)わからない、多分export DISPLAY=0を試してみてください?

2)使用しているマシンでGUIを表示するには、-Yオプションを指定してSSHを実行します。

0
vpzomtrrfrt