/etc/apt/sources.list "E212: लिखने के लिए फ़ाइल नहीं खोल सकता


178

मैं vi। एडिटर का उपयोग करके source.list को संपादित करने की कोशिश कर रहा हूं, लेकिन फ़ाइल को सहेजते समय निम्न त्रुटि हो रही है:

/etc/apt/sources.list" E212: Can't open file for writing

1
मुझे यह तब मिला जब निर्देशिका मैं फ़ाइल को इसके अधिकतम से अधिक लिखने की कोशिश कर रहा था। डिस्क का उपयोग
मेहदी नेलन

1
किसी एक उत्तर में वर्णित टिप्पणी के रूप में, आपको यह मिल सकता है यदि फ़ोल्डर जिसमें फ़ाइल रहता है हटा दिया गया है या पहले स्थान पर मौजूद नहीं था। स्थिति के आधार पर निर्देशिका बदलने या vi से निर्देशिका बनाने के लिए कमांड देखें।
कोन साइक

जवाबों:


278
For some reason the file you are writing to cannot be created or overwritten.
The reason could be that you do not have permission to write in the directory
or the file name is not valid.

विम में एक बिलिन हेल्प सिस्टम है। मैंने अभी उद्धृत किया है कि यह क्या कहता है :h E212

आप फ़ाइल को सुपरयुजर के रूप में संपादित करना चाह सकते हैं sudo vim FILE। या यदि आप अपना मौजूदा सत्र नहीं छोड़ना चाहते (और अब उसके पास उचित अधिकार हैं), तो आप जारी कर सकते हैं:

:w !sudo tee % > /dev/null

जिससे फाइल सेव होगी।

HTH


54
धन्यवाद! मेरे मामले में यह गैर-मौजूदा निर्देशिका में एक गैर-मौजूदा फ़ाइल को संपादित करने की कोशिश कर रहा था। बाहर निकलता है, जबकि आप गैर-मौजूदा फ़ाइल को "खोल" सकते हैं और फिर इसे सहेज कर बना सकते हैं, यह गैर-मौजूदा निर्देशिका के साथ काम नहीं करता है। और अब मुझे विम की अंतर्निहित मदद प्रणाली के बारे में पता है! :)
डोम डेलिमार

धन्यवाद! मेरे मामले में, मैं एक नेटवर्क ड्राइव पर लिखने की कोशिश कर रहा था, और मेरी नेटवर्क अनुमतियाँ उस स्क्रीन सत्र के लिए आंशिक रूप से क्रैश हो गई थीं। मैंने एक अस्थायी फ़ाइल को / var में लिखना समाप्त कर दिया है और उस कॉपी को दूसरे ssh उदाहरण से अपने होम डायरेक्टरी पर कॉपी कर रहा हूं।
रॉस ऐकेन

एक अमान्य संपादन वापस लाया गया ।
कक्षा स्टेकर

@Xinus इसे देखें: stackoverflow.com/questions/2600783/…
Zsolt Botykai

: ज E212 कहते हैं: ".bashrc" E212: लेखन E433 के लिए फ़ाइल नहीं खोल सकता: नहीं टैग फ़ाइल E149: क्षमा करें, के लिए कोई मदद नहीं E212
hello_there_andy

26

हर समय मेरे साथ ऐसा होता है, मैं लिखने के लिए एक रूट फाइल खोलता हूं:

इसके बजाय अपने सभी परिवर्तनों को खोने और sudo के साथ फिर से खोलने के लिए। उन परिवर्तनों को सहेजने का यह डेमो देखें:

एक मूल सेटअप बनाने के लिए एक समय सेटअप डेमो एक कम उपयोगकर्ता के लिए केवल फ़ाइल पढ़ें:

sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el

पहले फ़ाइल को सामान्य उपयोगकर्ता के रूप में खोलें:

vi temp.txt

फिर फ़ाइल में कुछ बदलाव करें, यह आपको इसकी रीड ओनली चेतावनी देता है। इस कमांड का उपयोग करें।

:w !chmod 777 %

फिर फ़ाइल लिखें:

:wq!

अनुमतियाँ विस्तारित हैं, और फ़ाइल सहेजी गई है। आपको विस्मयादिबोधक बिंदु की आवश्यकता है क्योंकि आप एक रूट फ़ाइल को कम उपयोगकर्ता के रूप में संपादित कर रहे हैं।

उस आदेश का क्या वर्णन है:

: W का अर्थ है फ़ाइल लिखें। बैंग का अर्थ है शेल के रूप में व्याख्या करना शुरू करना। chmod का अर्थ है अनुमतियाँ बदलना, 777 का अर्थ है पूर्ण अनुमतियाँ हर जगह। प्रतिशत का अर्थ है वर्तमान फ़ाइल नाम।

यह परिवर्तन को लागू करता है। और यह पूछता है कि क्या आप फिर से लोड करना चाहते हैं। "ओ" के लिए "ओ" दबाएं। पुनः लोड न करें या आप अपने परिवर्तनों को खो देंगे।


13

मेरे लिए काफी सरल उपाय था। मैं एक फ़ोल्डर में एक फ़ाइल को संपादित / बनाने की कोशिश कर रहा था जो मौजूद नहीं था। जैसा कि मैं पहले से ही फ़ोल्डर में था, मैं एक फ़ाइल को संपादित / बनाने की कोशिश कर रहा था ।

अर्थात pwd folder/file

और टाइप कर रहा था

sudo vim folder/file

और बल्कि स्पष्ट रूप से यह फ़ोल्डर में फ़ोल्डर की तलाश में था और बचाने में विफल रहा।


9

या शायद आप एक आसानी से माउंट किए गए एफएस पर हैं


1
यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें।
दिमित्रीग

13
@DmitryG यहाँ कोई सवाल नहीं पूछा जा रहा है, बस एक स्थिति बताई जा रही है। यही कारण था जिसके लिए मैं उसी स्थिति में आ गया और मुझे लगता है कि लोगों को इसके बारे में जानना उपयोगी होगा।
kellogs

5

मैंने Zsolt का उल्लेख स्तर 2 में किया है, मुझे इनपुट:

:w !sudo tee % > /dev/null

और फिर मेरी स्थिति में, मैं अभी भी फ़ाइल को संशोधित नहीं कर सकता हूं, इसलिए इसने संकेत दिया कि "!"। इसलिए मैंने इनपुट किया

:q! 

तब यह काम करता है


2
क्या यह सिर्फ फ़ाइल को क्विट नहीं करता है, और इसे सेव नहीं करता है?
jsibs


1

रूट के रूप में कनेक्ट करने का प्रयास करें और फिर फ़ाइल को संपादित करें। यह मेरे लिए काम करता है


1

जब आप फ़ाइल को vim में खोलें, तो sudo का उपयोग करें। यानी: सुडो विम टेक्स्टफाइल। यह समस्या को हल करेगा।


धन्यवाद इससे मदद मिली!
पार्सकर

1

उपयोगकर्ता को रूट में बदलें

sodu su -

आदि के लिए ब्राउज़ करें

vi sudoers

उपयोगकर्ता निजीकृत अनुभाग में रूट उपयोगकर्ता की तलाश करें। आप इसे पसंद करेंगे

root ALL=(ALL:ALL) ALL 

अपने उपयोगकर्ता नाम के लिए एक ही प्रविष्टि करें। यदि आप उपयोगकर्ता नाम 'myuser' हैं, तो जोड़ें

myuser ALL=(ALL:ALL) ALL

ऐसा लगेगा

root ALL=(ALL:ALL) ALL 

myuser ALL=(ALL:ALL) ALL 

बचाओ। रूट यूजर को अपने यूजर में बदलें। अब वही कोशिश करें जहाँ आपको सूदखोरों का मुद्दा मिल रहा था


0

यह संभव हो सकता है कि जिस फ़ाइल तक आप पहुँच रहे हैं, उसमें पहले से ही उसी निर्देशिका में एक स्वैप प्रति (या स्वैप संस्करण) हो

इसलिए पहले देखें कि कोई छिपी हुई फ़ाइल मौजूद है या नहीं।

उदाहरण के लिए, निम्न प्रकार की फ़ाइलों के लिए देखें

.system.conf.swp

आज्ञा का उपयोग करके

ls -a

और फिर, इसका उपयोग करके हटाएं ...

rm .system.conf.swp

आमतौर पर, मैं सुपर उपयोगकर्ता विशेषाधिकारों का उपयोग शुरू करने की सलाह देता हूं ...

sudo su

0

मुझे यह त्रुटि तब मिली जब मैंने git rmएक निर्देशिका में एक फ़ाइल पर उपयोग किया ।

मैं ~ / gitRepo / code / newFeature जैसी किसी चीज़ में था

NewFeature में केवल एक फ़ाइल थी। मैंने git rmउस फ़ाइल पर किया, फिर vi का उपयोग करके एक नई फ़ाइल myNewFile बनाने की कोशिश की।

उबंटू ने मुझे अभी भी नई निर्देशिका निर्देशिका के अंदर होने के रूप में दिखाया लेकिन वास्तव git rmमें पूरी निर्देशिका को हटा दिया था।

मुझे vi से बाहर निकलना था, एक डायरेक्टरी को नेविगेट करना था और फिर न्यूफ़्रीचर डायरेक्टरी को फिर से बनाना था।


-2

आपको बस रूट एक्सेस के साथ जेमफाइल तक पहुंचने की आवश्यकता है। इससे पहले vi:

आदेश:

sudo su -

फिर:

vi ~/...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.