/etc/apt/sources.list "E212: Dosya yazmak için açılamıyor


178

Vi düzenleyicisi kullanarak sources.list düzenlemeye çalışıyorum ama dosyayı kaydederken aşağıdaki hatayı alıyorum:

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

1
Bu dosyayı maks. Aşmak için dosya yazmaya çalıştığım zaman aldım. disk kullanımı
Mehdi Nellen

1
Yanıtlardan birinde belirtilen bir yorum olarak, dosyanın bulunduğu klasör silinmişse veya ilk başta mevcut değilse bunu alabilirsiniz. Duruma bağlı olarak dizin değiştirme veya vi'den dizin oluşturma komutlarını arayın.
kon psych

Yanıtlar:


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.

Vim yerleşik bir yardım sistemine sahiptir. Az önce söylediklerini alıntıladım :h E212.

Dosyayı süper kullanıcı olarak düzenlemek isteyebilirsiniz sudo vim FILE. Veya mevcut vim oturumunuzdan ayrılmak istemiyorsanız (ve şimdi uygun sudo haklarına sahipseniz), aşağıdakileri yapabilirsiniz:

:w !sudo tee % > /dev/null

Hangi dosyayı kaydeder.

HTH


54
Teşekkürler! Benim durumumda, var olmayan bir dizinde var olmayan bir dosyayı düzenlemeye çalışıyordu. Görünen o ki, var olmayan bir dosyayı "açabilir" ve sonra kaydederek oluşturabilirsiniz, ancak bu var olmayan bir dizinle çalışmaz. Ve şimdi Vim'in yerleşik yardım sistemini biliyorum! :)
Dom Delimar

Teşekkürler! Benim durumumda, bir ağ sürücüsüne yazmaya çalışıyordum ve ağ izinlerim bu ekran oturumu için kısmen çökmüştü. / Var'da geçici bir dosyaya yazdım ve başka bir ssh örneğinden ev dizinime kopyaladım.
Ross Aiken



: h E212 diyor ki: ".bashrc" E212: E433 yazmak için dosya açılamıyor: Etiket dosyası yok E149: Üzgünüz,
E212

26

Bu her zaman başıma geliyor, yazmak için bir kök dosya açıyorum:

Tüm değişikliklerinizi kaybetmek ve sudo ile yeniden açmak yerine. Bu değişikliklerin nasıl kaydedileceğiyle ilgili bu demoya bakın:

Tek seferlik Kurulum demosu, daha düşük bir kullanıcı için kök sahipli salt okunur dosya oluşturmak için:

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

Önce dosyayı normal kullanıcı olarak açın:

vi temp.txt

Sonra dosyada bazı değişiklikler yapın, sadece okumaya karşı sizi uyarır. Bu komutu kullanın.

:w !chmod 777 %

Sonra dosyayı yazın:

:wq!

İzinler genişletilir ve dosya kaydedilir. Bir kök dosyayı daha az kullanıcı olarak düzenlediğiniz için ünlem işareti gerekir.

Bu komutun ne yaptığının açıklaması:

: W, dosyayı yazmak anlamına gelir. Patlama, kabuk olarak yorumlamaya başlamak anlamına gelir. chmod değişiklik izinleri, 777 her yerde tam izinler anlamına gelir. Yüzde, geçerli dosya adı anlamına gelir.

Değişikliği uygular. Ve yeniden yüklemek isteyip istemediğinizi sorar. "Tamam" için "O" tuşuna basın. Yeniden yüklemeyin yoksa değişikliklerinizi kaybedersiniz.


13

Benim için oldukça basit bir çözüm vardı. Var olmayan bir klasörde dosya düzenlemeye / oluşturmaya çalışıyordum . Zaten klasördeyken içinde bir dosya düzenlemeye / oluşturmaya çalışıyordum .

yani pwd folder/file

ve yazıyordu

sudo vim folder/file

ve daha doğrusu klasördeki klasörü arıyordu ve kaydedemedi.


9

Ya da belki de salt okunur bir fs


1
Bu soruya bir cevap vermez. Bir yazardan eleştiri veya açıklama istemek için gönderilerinin altına bir yorum bırakın.
DmitryG

13
@DmitryG Burada soru sorulmuyor, sadece bir durum belirtiliyor. Ben de aynı duruma girmemizin nedeni buydu ve bence insanlar bu durumu bilmeyi faydalı buluyorlardı.
kellogs

5

Seviye 2'de Zsolt'a başvurdum, girdim:

:w !sudo tee % > /dev/null

ve sonra benim durumumda, ben hala dosyayı değiştiremiyorum, bu yüzden "!" eklemek istedi. bu yüzden girdim

:q! 

o zaman işe yarıyor


2
bu sadece dosyadan çıkmıyor ve kaydetmiyor mu?
jsibs

3

benim için vim çalıştırmadan önce dosya sistemini Salt Okunur olarak değiştirmeye çalıştım:

bash-3.2# mount -o remount rw /

1

Kök olarak bağlanmayı ve ardından dosyayı düzenlemeyi deneyin. Bu benim için çalışıyor


1

Dosyayı vim'de açtığınızda, sudo kullanın. yani: sudo vim textfile. bu sorunu çözecektir.


Yardımcı oldu teşekkürler!
parsecer

1

kullanıcıyı kökten değiştir

sodu su -

vs'ye göz at

vi sudoers

kullanıcı ayrıcalık bölümünde kök kullanıcıyı arayın. onu alacaksın

root ALL=(ALL:ALL) ALL 

kullanıcı adınız için aynı girişi yapın. kullanıcı adınız 'kullanıcım' ise ekleyin

myuser ALL=(ALL:ALL) ALL

gibi görünecek

root ALL=(ALL:ALL) ALL 

myuser ALL=(ALL:ALL) ALL 

Onu kurtar. kök kullanıcıyı kullanıcı olarak değiştirin. şimdi sudoers sorununu yaşadığınız yerde deneyin


0

Erişmekte olduğunuz dosyanın aynı dizinde zaten bir takas kopyası (veya takas sürümü) olması mümkündür.

Bu nedenle önce gizli bir dosyanın var olup olmadığını görün.

Örneğin, aşağıdaki dosya türleri için bakın

.system.conf.swp

Komutunu kullanarak

ls -a

Ve sonra şunu kullanarak silin ...

rm .system.conf.swp

Genellikle, süper kullanıcı ayrıcalıklarını kullanmaya başlamanızı öneririm ...

sudo su

0

git rmBir dizindeki bir dosyada kullandığımda bu hatayı aldım .

~ / GitRepo / code / newFeature gibi bir şeydeydim

NewFeature uygulamasında yalnızca bir dosya vardı. git rmBu dosya üzerinde bir yaptım sonra vi kullanarak myNewFile yeni bir dosya oluşturmaya çalıştım.

Ubuntu bana hala newFeature dizininde olduğunu gösterdi, ancak aslında git rmtüm dizini kaldırmıştı.

Vi'dan çıkıp bir dizine çıkıp newFeature dizinini yeniden oluşturmak zorunda kaldım.


-2

Gemfile'a root erişimi ile erişmeniz yeterlidir. Önce vi:

komut:

sudo su -

sonra:

vi ~/...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.