“Error: XDG_RUNTIME_DIR tidak disetel di lingkungan.” Ketika mencoba menjalankan nautilus sebagai root

14

Saya mencoba menjalankan nautilus sebagai root tetapi ketika saya menjalankan "sudo nautilus" dari terminal, saya mendapatkan kesalahan berikut:

galat: XDG_RUNTIME_DIR tidak disetel di lingkungan.

(nautilus: 9341): Gtk-WARNING **: tidak dapat membuka tampilan:

Masalah tidak terjadi ketika saya mencoba menjalankan nautilus sebagai non-root. Saya menggunakan ubuntu 14.04. Adakah yang tahu bagaimana saya bisa memperbaikinya?

quantumbutterfly
sumber
Sekadar catatan, saya berakhir di sini setelah saya mendapatkan kesalahan yang sama ketika mencoba melakukan X11Forwarding via ssh. Solusi: Saya lupa menggunakan -Xopsi ketika memulai sesi ssh saya.
JW.

Jawaban:

13

Ketika Anda menjalankan perangkat lunak sebagai pengguna lain, Anda sebenarnya memulai lingkungan minimal dan terisolasi baru yang tidak membawa beberapa variabel "berlebihan" (antara lain variabel yang bertanggung jawab untuk menyuntikkan pustaka atau mengatur hak istimewa tertentu). Ganti sudo nautiluspanggilan Anda dengan yang berikut - ini akan menjalankan pengaturan x server khusus pengguna dari sesi saat ini:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

Ini adalah solusi tingkat rendah satu kali tetapi akan bekerja pada mesin yang tidak dikonfigurasikan. Jika Anda ingin "memperbaiki Anda sudo" secara permanen, Anda perlu menemukan masalah dengan konfigurasi lingkungan Anda dan memperbaikinya seperti yang dijelaskan dalam jawaban lain.

cprn
sumber
1
@Cyprian Guerra - Ini tidak diatur ke lingkungan, ini hanya memungkinkan Anda menjalankan satu kali. Ini tidak membantu. Menjalankan sudo nautilusharus berfungsi seperti biasa dari terminal saat dijalankan. Biasanya setiap kali saya melakukannya dari terminal pada instalasi baru terbuka seperti biasa dengan sudo.
@ user94959 Anda tidak memahami prinsip dasar - lingkungan baru sedang diatur, variabel-variabel dijalankan, tugas berjalan, saat tugas keluar dari lingkungan terpisah ini sedang dihancurkan. Karenanya ya, Anda perlu mengatur variabel untuk setiap lingkungan baru. Jika Anda ingin lebih banyak bahan bacaan, cobalah pkexecdan bacalah sudohalaman serta google untuk sengketa terkait.
cprn
@CyprianGuerra lalu bagaimana kalau saya mencoba membuka aplikasi dari menu desktop yang membutuhkan hak-hak tinggi dapat berjalan setelah input kata sandi? jelas ada sesuatu yang hilang dalam konfigurasi jika tidak diluncurkan dengan benar karena tidak diatur dalam lingkungan XDG seperti biasa? masalahnya adalah ketika perkataannya Cannot open displayberarti ada sesuatu yang hilang dari file konfigurasi itu karena sesuatu memodifikasinya dan menghapusnya dari lingkungan ketika seharusnya tidak. Jadi bagaimana itu dapat diatur kembali ke lingkungan secara permanen maka saya tidak harus berurusan dengan ini?
1
@ Sherrellbc Saya mengatakan secara eksplisit kit kebijakan untuk dijalankan envsebelum menjalankan nautilusdan yang pertama mengurus pengaturan variabel untuk saya. Anda bisa mengeceknya man env.
cprn
1
@ cprn D'oh. Saya harus memeriksa halaman manual terlebih dahulu. env COMMAND ARG ...
sherrellbc
1

Saya juga punya masalah yang sama di Ubuntu 14.04. Buka terminal dengan menekan,

Ctrl+ Alt+T

kemudian sudo visudo

ubah jalurnya

Defaults env_keep = "https_proxy"

untuk

Defaults env_keep + = "https_proxy"

Itu bekerja seperti pesona.

Om Prakash
sumber
Ini bekerja tetapi pengaturan yang sama untuk $XAUTHORITYmenentang tujuan.
cprn
1

Untuk membuatnya mudah - lebih menjelaskan booting baru dari sistem saya.

Setelah semua penjelasan di sini saya sampai pada hasil - dan "env" di terminal mengatakan sudah tepat untuk sesi ini:

Dua baris ini untuk menggunakan variabel lingkungan:

untuk perilaku tmp yang saya pilih:

mkdir -pv ~ / .cache / xdgr

Untuk mengatur variabel lingkungan:

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

Setelah menutup terminal dan membuka baru untuk penarikan env mereka mengatakan:

XDG_RUNTIME_DIR = / run / user / 1001

catatan: tidak apa-apa untuk pengguna di bawah ubuntu, root membutuhkan lebih banyak (info terakhir dengan istilah - dengan 0700 izin)

Andrew
sumber
0

Jika Anda mendapatkan kesalahan ini di Docker; Inilah yang saya lakukan

# 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
Alex Punnen
sumber