“ ข้อผิดพลาด: XDG_RUNTIME_DIR ไม่ได้ตั้งค่าในสภาพแวดล้อม” เมื่อพยายามเรียกใช้ nautilus ในฐานะรูท


15

ฉันพยายามเรียกใช้ nautilus เป็น root แต่เมื่อฉันเรียกใช้ "sudo nautilus" จากเทอร์มินัลฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด: XDG_RUNTIME_DIR ไม่ได้ตั้งค่าในสภาพแวดล้อม

(nautilus: 9341): Gtk-WARNING **: ไม่สามารถเปิดจอแสดงผล:

ปัญหาไม่เกิดขึ้นเมื่อฉันพยายามเรียกใช้ nautilus ที่ไม่ใช่รูท ฉันใช้ Ubuntu 14.04 ไม่มีใครรู้ว่าฉันจะแก้ไขได้อย่างไร


เพียงเพื่อบันทึกฉันลงเอยที่นี่หลังจากฉันมีข้อผิดพลาดเดียวกันเกิดขึ้นเมื่อพยายามทำ X11 การส่งต่อผ่าน ssh วิธีแก้ไข: ฉันลืมใช้-Xตัวเลือกเมื่อเริ่มเซสชันของฉัน
เจดับบลิว

คำตอบ:


14

เมื่อคุณเรียกใช้ซอฟต์แวร์ในฐานะผู้ใช้รายอื่นคุณจะเริ่มต้นสภาพแวดล้อมที่เล็กที่สุดและแยกได้ซึ่งไม่ได้ใช้ตัวแปร "มากเกินไป" บางอย่าง (ในบรรดาตัวแปรอื่น ๆ ที่รับผิดชอบในการฉีดไลบรารีหรือตั้งค่าสิทธิ์บางอย่าง) แทนที่การsudo nautilusโทรของคุณด้วยการต่อไปนี้ - มันจะดำเนินการกับการตั้งค่าเซิร์ฟเวอร์ x ผู้ใช้เฉพาะจากเซสชันปัจจุบัน:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

นี่เป็นวิธีการแก้ปัญหาระดับต่ำครั้งเดียว แต่จะทำงานกับเครื่องที่ไม่ได้กำหนดค่า หากคุณต้องการ "แก้ไข" อย่างถาวรsudoคุณต้องค้นหาปัญหาเกี่ยวกับการกำหนดค่าสภาพแวดล้อมของคุณและแก้ไขให้ถูกต้องตามที่อธิบายไว้ในคำตอบอื่น ๆ


1
@Cyprian Guerra - นี่ไม่ได้ตั้งอยู่ในสภาพแวดล้อมซึ่งจะช่วยให้คุณทำงานเพียงครั้งเดียว สิ่งนี้ไม่ค่อยมีประโยชน์ การรันsudo nautilusควรทำงานตามปกติจากเทอร์มินัลเมื่อทำงาน โดยปกติเมื่อใดก็ตามที่ฉันทำเช่นนั้นจากเทอร์มินัลในการติดตั้งใหม่จะเปิดขึ้นตามปกติด้วย sudo

@ user94959 คุณไม่เข้าใจหลักการพื้นฐาน - มีการตั้งค่าสภาพแวดล้อมใหม่ตัวแปรถูกนำไปใช้งานจะดำเนินการเมื่องานออกจากสภาพแวดล้อมที่แยกต่างหากนี้จะถูกทำลาย ดังนั้นใช่คุณต้องตั้งค่าตัวแปรสำหรับทุกสภาพแวดล้อมใหม่ หากคุณต้องการลองอ่านเนื้อหาpkexecและsudoหน้าคนรวมทั้ง google สำหรับข้อพิพาทที่เกี่ยวข้อง
cprn

@CyprianGuerra แล้วจะเกิดอะไรขึ้นเมื่อฉันพยายามเปิดแอปพลิเคชันจากเมนูเดสก์ท็อปที่ต้องใช้สิทธิ์ระดับสูงสามารถเรียกใช้หลังจากป้อนรหัสผ่านแล้ว เห็นได้ชัดว่ามีบางอย่างขาดหายไปในการกำหนดค่าหากไม่สามารถเปิดใช้งานได้อย่างถูกต้องเพราะไม่ได้ตั้งค่าในสภาพแวดล้อม XDG เหมือนปกติใช่หรือไม่ ปัญหาคือเมื่อคำพูดของมันCannot open displayหมายถึงสิ่งที่ขาดหายไปจากไฟล์การกำหนดค่าเพราะสิ่งที่แก้ไขและลบออกจากสภาพแวดล้อมเมื่อมันไม่ควร ดังนั้นจะสามารถตั้งค่ากลับสู่สภาพแวดล้อมอย่างถาวรดังนั้นฉันจึงไม่ต้องจัดการกับเรื่องนี้?

1
@sellellbc ฉันกำลังบอกชุดนโยบายอย่างชัดเจนให้เรียกใช้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" ในเทอร์มินัลพูดแล้วว่าเหมาะสมสำหรับเซสชั่นเหล่านี้:

สองแถวเหล่านี้เพื่อใช้ตัวแปรสภาพแวดล้อม:

สำหรับพฤติกรรม tmp ฉันได้เลือก:

mkdir -pv ~ / .cache / xdgr

สำหรับการตั้งค่าตัวแปรสภาพแวดล้อม:

ส่งออก XDG_RUNTIME_DIR = $ PATH: ~ / .cache / xdgr

หลังจากปิดเทอร์มินัลและเปิดใหม่สำหรับการเรียกคืน env พวกเขาบอกว่า:

XDG_RUNTIME_DIR = / วิ่ง / ผู้ใช้ / 1001

หมายเหตุ: มันก็โอเคสำหรับผู้ใช้ภายใต้อูบุนตูรูตต้องการมากขึ้น (ข้อมูลล่าสุดตามเงื่อนไข - ด้วยสิทธิ์ 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.