"त्रुटि: XDG_RUNTIME_DIR पर्यावरण में सेट नहीं है।" जब रूट के रूप में नॉटिलस को चलाने का प्रयास किया जाता है


15

मैं रूट के रूप में नॉटिलस चलाने का प्रयास कर रहा हूं, लेकिन जब मैं टर्मिनल से "सूडो नॉटिलस" चलाता हूं, तो मुझे निम्नलिखित त्रुटि मिलती है:

त्रुटि: XDG_RUNTIME_DIR वातावरण में सेट नहीं है।

(नॉटिलस: 9341): Gtk-WARNING **: प्रदर्शन नहीं खोल सकता:

समस्या तब नहीं होती है जब मैं नॉटिलस को गैर-रूट के रूप में चलाने का प्रयास करता हूं। मैं ubuntu 14.04 का उपयोग कर रहा हूं। क्या किसी को पता है कि मैं इसे कैसे ठीक कर सकता हूँ?


बस रिकॉर्ड के लिए, मैं यहाँ समाप्त हुआ जब मैं एक ही त्रुटि आया था जब ssh के माध्यम से X11Forwarding करने की कोशिश कर रहा था। समाधान: मैं -Xअपना ssh सत्र शुरू करते समय विकल्प का उपयोग करना भूल गया था ।
जेडब्ल्यू।

जवाबों:


14

जब आप किसी अन्य उपयोगकर्ता के रूप में सॉफ़्टवेयर चलाते हैं, तो आप वास्तव में नया न्यूनतम और अलग-थलग वातावरण शुरू करते हैं जो कुछ "अत्यधिक" चर (पुस्तकालयों को इंजेक्ट करने या कुछ विशेषाधिकार स्थापित करने के लिए जिम्मेदार अन्य चर) पर नहीं ले जाता है। अपने sudo nautilusकॉल को निम्न के साथ बदलें - यह वर्तमान सत्र से उपयोगकर्ता-विशिष्ट x सर्वर सेटिंग्स पर ले जाएगा:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

यह एक बार कम स्तर का समाधान है, लेकिन यह एक malconfigured मशीन पर काम करेगा। यदि आप स्थायी रूप से "अपना" ठीक करना चाहते हैं, तो आपको sudoअपने पर्यावरण कॉन्फ़िगरेशन के साथ समस्या को खोजने और इसे अन्य उत्तरों में वर्णित रूप से ठीक करने की आवश्यकता है।


1
@ साइपरियन गुएरा - यह पर्यावरण में सेट नहीं है, यह केवल आपको एक बार चलाने की सुविधा देता है। यह शायद ही मददगार है। रनिंग sudo nautilusटर्मिनल से सामान्य के रूप में काम करना चाहिए। आम तौर पर जब भी मैं टर्मिनल से एक ताजा स्थापित करता हूं तो यह सूडो के साथ सामान्य रूप से खुलता है।

@ user94959 आप मूल सिद्धांत को नहीं समझते हैं - नया वातावरण सेट किया जा रहा है, चर चलाए जाते हैं, कार्य चलता है, जब कार्य से बाहर निकलता है यह अलग वातावरण नष्ट हो रहा है। इसलिए हां, आपको हर नए वातावरण के लिए चर निर्धारित करने की आवश्यकता है। यदि आप संबंधित पठन के लिए अधिक पठन सामग्री ट्राइ pkexecऔर sudoमैन पेजों के साथ-साथ Google की इच्छा रखते हैं ।
cprn

@CyprianGuerra तब कैसे आता है जब मैं डेस्कटॉप मेनू से एप्लिकेशन को खोलने की कोशिश करता हूं, जिसमें एलिवेटेड विशेषाधिकारों की आवश्यकता होती है जो पासवर्ड इनपुट के बाद चल सकते हैं? जाहिर है कि कॉन्फ़िगरेशन में कुछ गड़बड़ है अगर यह सही ढंग से लॉन्च नहीं होगा क्योंकि यह सामान्य की तरह एक्सडीजी वातावरण में सेट नहीं है? मुद्दा तब है जब इसके कहने का Cannot open displayअर्थ है कि यह कॉन्फ़िगरेशन फ़ाइल से कुछ गायब है क्योंकि कुछ ने इसे संशोधित किया और इसे पर्यावरण से हटा दिया जब यह नहीं होना चाहिए। तो यह कैसे स्थायी रूप से पर्यावरण में वापस सेट किया जा सकता है तो मुझे इससे निपटने की ज़रूरत नहीं है?

1
@sherrellbc मैं स्पष्ट रूप से चलाने envसे पहले चलाने के लिए नीति किट बता रहा हूं nautilusऔर पूर्व मेरे लिए चर सेट करने के लिए ध्यान रखता है। आप जांच कर सकते हैं man env
cprn

1
@ कर्ण डी'ोह। मुझे पहले मैन पेज चेक करना चाहिए था। 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

टर्मिनल बंद करने के बाद और एनवी के याद के लिए एक नया खुला वे बताते हैं:

XDG_RUNTIME_DIR = / रन / उपयोगकर्ता / 1001

ध्यान दें: यह ubuntu के तहत उपयोगकर्ता के लिए ठीक है, रूट को और अधिक की आवश्यकता है (शब्द द्वारा अंतिम जानकारी - 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.