アプリケーションを実行しようとしていますが、実行すると
Could not open display `(null').
エラー。どうしてこれなの?具体的には、スクラッチを実行しようとしました(aws経由でインストールしました):
root@ip-10-251-56-90:/usr/bin# ./scratch
Executing: /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-ALSA /usr/share/scratch/Scratch.image
Could not open display `(null)'.
このようなエラーは、グラフィック表示を必要とするプログラムを実行しているが、それを見つけることができないことを意味します。 GUIプログラムは、$DISPLAY
環境変数で定義されたディスプレイに接続します。エラーの一般的な形式は
Could not open display $DISPLAY
あなたの場合、エラーは(null)
と言うので、これは$DISPLAY
が設定されていないことを意味します。したがって、次のことが必要です。
ssh
のようなものを使用してリモートマシンにログインしている場合は、localの$DISPLAY
をエクスポートする必要があります。マシンからリモートコンピューターにGUIプログラムを表示するように指示します。これは、ssh
の-X
または-Y
オプションを使用して実行できます。
ssh -Y [email protected]
man ssh
で説明されているように:
-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not
subjected to the X11 SECURITY extension controls.
-X Enables X11 forwarding. This can also be specified on a per-Host
basis in a configuration file.
これがローカルマシンの場合、 グラフィカル環境のインストール にする必要があります。デフォルトのUbuntuセットアップを想定して、すでにインストールされている場合は、次のコマンドで起動できます。
Sudo service lightdm start
グラフィカル環境を実行しているが、何らかの理由で$DISPLAY
がnull
に設定されている場合、再定義できます。詳細は実際の状況によって異なりますが、ほとんどの場合、必要なものは(ローカルマシン上にあると仮定して)
export DISPLAY=:0.0
その後、GUIプログラムを通常どおり実行できます。
Xサーバーを実行しているが、ttyに切り替えた場合(たとえば、 Ctrl+Alt+F1)、単にグラフィカル環境に戻る必要がある場合があります。これは、GUIが実行している仮想コンソールに依存しますが、ほとんどの場合、7になるUbuntuで使用できるため、 Alt+F7。
それでもデスクトップに戻らない場合は、すべてのttyを循環させてください Alt+Left Arrow または Alt+Right Arrow 正しいものが見つかるまで。
別の一般的な問題は、通常のユーザーとしてXセッションを開始し、root
または別のユーザーとして接続しようとしていることです。これを有効にするには、このユーザーがグラフィカルデスクトップにアクセスする権利を持っていることを指定する必要があります。例えば:
xhost +si:localuser:terdon
これにより、ローカルユーザーterdon
が実行中のXサーバーに接続できるようになります。このコマンドは、Xセッションの所有者が実行する必要があります。または、anyoneの接続を許可するには:
xhost +
そして、許可を取り消すには:
xhost -