まず最初に:XDG_RUNTIME_DIR
最初の質問「XDG_RUNTIME_DIRとは」に答えるために 、ログイン時に自動的に設定される環境変数です。小さな一時ファイルを保存できるユーザー固有のディレクトリの場所を実行するプログラムに指示します。XDG_RUNTIME_DIR
はpam_systemd
(8)によって設定されるため、実際にはX(プログラムをグラフィカルに実行する)に関連していないことに注意してください。
トラブルシューティング方法
2番目の質問、「この問題のトラブルシューティング方法」とても良いものです。これは、修正が何であるかだけでなく、自分で修正する方法にも興味があることを意味します。まず、最初のエラーメッセージを見てください。特に、No protocol specified
またはを検索WARNING **: Could not open X display
すると、問題がX(X Windowing Systemとも呼ばれます)にあることがわかります。これは、グラフィカルプログラムが画面に表示される方法です。これを知ることで、多くのトラブルシューティングの質問が思い浮かぶはずです。
Xディスプレイ
次の質問は、証拠が開けないこの「Xディスプレイ」とは何でしょうか?「ディスプレイ」は、画面のアドレスです。[*]画面に書き込むプログラムは、アドレスを知っている必要があります。Xディスプレイが何であるかを確認するには、DISPLAY環境変数を確認します。
echo $DISPLAY
また、次のようにsudo
入力することで、ディスプレイの表示を確認できます
sudo -s
echo $DISPLAY
exit
何も表示されない場合は、それが問題です。(以下の修正を参照)。
XAUTHORITY
しかし、それが問題ではなく、DISPLAY
が正しく設定されている場合はsudo
どうなりますか?そして、あなたが疑問に思うかもしれません、んXは私のディスプレイに書くことから、他のユーザーを防ぐ権限のいくつかの並べ替えを持っていますか?もしそうだと思うなら、あなたは正しいだろう、Xには2つの主要な認証方法がある:xauth
とxhost
。現在最も一般的に使用されているのは、xauth
(1)XAUTHORITY
環境変数を使用するものです。繰り返しますが、適切に設定されているかどうかを確認しましょうsudo
:
echo $XAUTHORITY
sudo -s
echo $XAUTHORITY
exit
場合は、XAUTHORITY
あなたのためのあなたのホームディレクトリ内のファイルを指しているが、あなたが実行することのブランクはsudo
、その後、問題だという。
FIX:環境変数を保存する
だから、修正は何ですか?DISPLAY
またはのいずれかのXAUTHORITY
環境変数がを越えて保存されない場合、次のようにオプションを使用しsudo
てsudo
(8)環境を保存するように指示できます-E
sudo -E evince
より良い方法:env_keep
待って、-E
すべてが魔法のように機能するのなら、なぜそれがデフォルトではないのsudo
でしょうか?答えは、潜在的なセキュリティ上の危険があるということです。環境変数はプログラムの動作に影響を与えるため、ユーザーアカウントからルートにすべてをエクスポートすることは望ましくありません。それを行う「正しい」方法は、(8)を使用Defaults env_keep += "DISPLAY XAUTHORITY"
してsudoers
(5)ファイルに行を追加することです。以下を実行することにより、sudoが保持する環境変数を確認できます。visudo
sudo sudo -V
(はい、sudo
2回入力します)。デフォルトのsudoersファイル(/etc/sudoers
)ではなく、システムをアップグレードしても上書きされないローカルファイルに行を配置することをお勧めします。次のようにできます:
sudo visudo -f /etc/sudoers.d/local
しかし、上記のいずれも機能しない場合はどうなるでしょうか?
これはかなり徹底した答えだと思いますが、まだ問題が解決しない場合は、もう1つお勧めします。あなたは使用することができますxhost
(1)を、そうのようなローカルホスト(マシン)上の特定のユーザーにアクセスを許可します
xhost si:localuser:root
この場合、プログラムroot
をsudo
実行するアカウントであるため、ユーザー名として指定しています。
[*]:Q:画面が1つしかないのに、なぜXディスプレイに「アドレス」が必要なのですか?A:ためですXは、あなたのマシン上ではなく、インターネット上だけではなく作業することができます。ではX、それはあなたの画面上に表示され、他のホスト上の他のインターネットホストとプログラムに表示あなたのマシン上でプログラムを実行するのは簡単です(あなたがそれらの許可を与えると仮定した場合)。