「エラー:環境でXDG_RUNTIME_DIRが設定されていません。」rootとしてnautilusを実行しようとすると


14

rootとしてnautilusを実行しようとしていますが、ターミナルから「sudo nautilus」を実行すると、次のエラーが表示されます。

エラー:XDG_RUNTIME_DIRが環境に設定されていません。

(nautilus:9341):Gtk警告**:ディスプレイを開けません:

nautilusを非ルートとして実行しようとしても、問題は発生しません。私はubuntu 14.04を使用しています。誰も私がこれを修正する方法を知っていますか?


記録のためだけに、ssh経由でX11Forwardingを実行しようとしたときに同じエラーが発生した後、ここで終了しました。解決策:-Xsshセッションを開始するときにオプションを使用するのを忘れていました。
JW。

回答:


13

別のユーザーとしてソフトウェアを実行すると、実際には、いくつかの「過剰な」変数(特に、ライブラリの挿入または特定の特権の設定を担当する変数)を引き継がない新しい最小かつ隔離された環境を開始します。sudo nautilus呼び出しを次のものに置き換えます-現在のセッションからユーザー固有のxサーバー設定を引き継ぎます:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

これは一度限りの低レベルのソリューションですが、構成が正しくないマシンでも機能します。恒久的に「修正」したい場合sudoは、環境設定の問題を見つけて、他の回答で説明されているように修正する必要があります。


1
@Cyprian Guerra-これは環境に設定されず、一度だけ実行できます。これはほとんど役に立ちません。実行sudo nautilusすると、ターミナルから正常に動作するはずです。通常、新規インストールで端末からこれを行うと、sudoで通常どおりに開きます。

@ user94959あなたは基本的な原則を理解していません-新しい環境が設定され、変数が引き継がれ、タスクが実行され、タスクが終了すると、この別個の環境が破壊されます。そのため、新しい環境ごとに変数を設定する必要があります。さらに資料を読みたい場合は、関連する論争のグーグルだけでなくpkexecsudomanページも試してみてください。
cprn

@CyprianGuerraは、パスワード入力後に実行できる昇格された特権を必要とするデスクトップメニューからアプリケーションを開こうとするとどうなりますか?通常のようにXDG環境で設定されていないために正しく起動しない場合、明らかに設定に何かが欠けていますか?問題は、その言い方Cannot open displayが構成ファイルから何かが欠落していることを意味する場合です。何かがそれを修正し、環境から削除する必要があるためです。それでは、どうすれば永久に環境に戻すことができるので、これに対処する必要はありませんか?

1
@sherrellbc実行するenv前にポリシーキットを実行するように明示的に指示していますがnautilus、前者が変数の設定を処理します。確認できman envます。
cprn

1
@cprn D'oh。最初にマニュアルページを確認する必要がありました。env COMMAND ARG ...
sherrellbc

1

Ubuntu 14.04でも同じ問題が発生しました。を押してターミナルを開き、

Ctrl+ Alt+T

それから sudo visudo

行を変更する

デフォルトenv_keep = "https_proxy"

デフォルトenv_keep + = "https_proxy"

それは魅力のように働いた。


動作しますが$XAUTHORITY、目的に反して同じ設定にします。
cprn

1

簡単にするために、システムの新しい起動について詳しく説明しました。

ここでのすべての説明の後、私は結果に来ました-そして、ターミナルの「env」はすでにこれらのセッションに適していると言いました

環境変数を使用する次の2つの行:

私が選択したtmpの動作について:

mkdir -pv〜/ .cache / xdgr

環境変数を設定するには:

export XDG_RUNTIME_DIR = $ PATH:〜/ .cache / xdgr

ターミナルを閉じ、envをリコールするために新たに開いた後、次のように伝えます。

XDG_RUNTIME_DIR = / run / user / 1001

注:ubuntuの下のユーザーには問題ありません。rootにはさらに必要です(用語ごとの最新情報-0700のアクセス許可)


0

Dockerでこのエラーが発生する場合; これが私がすることです

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.