/etc/apt/sources.list "E212: Tidak dapat membuka file untuk ditulis

178

Saya mencoba mengedit sources.list menggunakan vi editor tetapi mendapatkan kesalahan berikut saat menyimpan file:

/etc/apt/sources.list" E212: Can't open file for writing
codersofthedark
sumber
1
Saya mendapatkan ini ketika direktori saya mencoba untuk menulis file melebihi maksimumnya. penggunaan disc
Mehdi Nellen
1
Sebagai komentar yang disebutkan dalam salah satu jawaban, Anda mungkin mendapatkan ini jika folder tempat file itu telah dihapus atau tidak ada di tempat pertama. Cari perintah untuk mengubah direktori atau membuat direktori dari vi, tergantung situasinya.
kon psych

Jawaban:

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 memiliki sistem bantuan bawaan. Saya hanya mengutip apa yang dikatakan :h E212.

Anda mungkin ingin mengedit file sebagai superuser sebagai sudo vim FILE. Atau jika Anda tidak ingin meninggalkan sesi vim yang ada (dan sekarang memiliki hak sudo yang tepat), Anda dapat mengeluarkan:

:w !sudo tee % > /dev/null

Yang akan menyimpan file.

HTH

Zsolt Botykai
sumber
54
Terima kasih! Dalam kasus saya itu sedang mencoba untuk mengedit file yang tidak ada di direktori yang tidak ada. Ternyata, selagi Anda bisa "membuka" file yang tidak ada dan kemudian membuatnya dengan menyimpannya, ini tidak berfungsi dengan direktori yang tidak ada. Dan sekarang saya tahu tentang sistem bantuan bawaan Vim! :)
Dom Delimar
Terima kasih! Dalam kasus saya, saya mencoba menulis ke drive jaringan, dan izin jaringan saya sebagian macet untuk sesi layar itu. Saya akhirnya menulis ke file sementara di / var dan menyalinnya dari contoh ssh lain ke direktori home saya.
Ross Aiken
Putar kembali hasil edit yang tidak valid .
stacker kelas
@Xinus lihat ini: stackoverflow.com/questions/2600783/…
Zsolt Botykai
: h E212 mengatakan: ".bashrc" E212: Tidak dapat membuka file untuk menulis E433: Tidak ada tag file E149: Maaf, tidak ada bantuan untuk E212
hello_there_andy
26

Itu terjadi pada saya sepanjang waktu, saya membuka file root untuk menulis:

Alih-alih kehilangan semua perubahan Anda dan membuka kembali dengan sudo. Lihat demo ini tentang bagaimana menyimpan perubahan itu:

Demo penyiapan satu kali untuk membuat file read only yang dimiliki root untuk pengguna yang lebih rendah:

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

Pertama buka file sebagai pengguna normal:

vi temp.txt

Kemudian buat beberapa perubahan pada file, itu memperingatkan Anda hanya baca. Gunakan perintah ini.

:w !chmod 777 %

Kemudian tulis file:

:wq!

Izin diperluas, dan file disimpan. Anda memerlukan tanda seru karena Anda mengedit file root sebagai pengguna yang lebih rendah.

Penjelasan tentang apa yang dilakukan perintah itu:

The: w berarti menulis file. Bang berarti mulai menafsirkan sebagai shell. chmod berarti mengubah izin, 777 berarti izin penuh di mana-mana. Persen berarti nama file saat ini.

Itu berlaku perubahan. Dan ia bertanya apakah Anda ingin memuat ulang. Tekan "O" untuk "Oke". Jangan memuat ulang atau Anda akan kehilangan perubahan Anda.

Eric Leschinski
sumber
13

Bagi saya ada solusi yang cukup sederhana. Saya mencoba mengedit / membuat file di folder yang tidak ada. Karena saya sudah berada di folder saya mencoba mengedit / membuat file masuk

yaitu pwd folder/file

dan sedang mengetik

sudo vim folder/file

dan lebih tepatnya itu mencari folder di folder dan gagal menyimpan.

Simon
sumber
9

Atau mungkin Anda sedang membaca fs yang terpasang

Kellogs
sumber
1
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka.
DmitryG
13
@DmitryG Tidak ada pertanyaan yang ditanyakan di sini, hanya situasi yang dinyatakan. Inilah alasan mengapa saya masuk ke dalam situasi yang sama dan saya pikir orang-orang akan merasa berguna untuk mengetahuinya.
kellog
5

Saya dirujuk ke Zsolt di level 2, saya masukan:

:w !sudo tee % > /dev/null

dan kemudian dalam situasi saya, saya masih tidak dapat memodifikasi file, sehingga diminta menambahkan "!". jadi saya masukan

:q! 

lalu bekerja

Oscar Zhou1989
sumber
2
bukankah ini hanya berhenti dari file, dan tidak menyimpannya?
Juli
3

bagi saya bekerja mengubah filesystem dari Read-Only sebelum menjalankan vim:

bash-3.2# mount -o remount rw /
Przemysław Czechowski
sumber
1

Cobalah untuk terhubung sebagai root dan kemudian edit file. Ini bekerja untuk saya

Kazman
sumber
1

Saat Anda membuka file dalam vim, gunakan sudo. yaitu: sudo vim textfile. ini akan menyelesaikan masalah.

Bugz
sumber
Terima kasih itu membantu!
parsecer
1

ubah pengguna menjadi root

sodu su -

telusuri ke dll

vi sudoers

mencari pengguna root di bagian hak pengguna. Anda akan mendapatkannya seperti

root ALL=(ALL:ALL) ALL 

buat entri yang sama untuk nama pengguna Anda. jika nama pengguna Anda adalah 'myuser' kemudian tambahkan

myuser ALL=(ALL:ALL) ALL

akan terlihat seperti

root ALL=(ALL:ALL) ALL 

myuser ALL=(ALL:ALL) ALL 

Simpan itu. ubah pengguna root ke pengguna Anda. sekarang coba sama di mana Anda mendapatkan masalah sudoers

somspeaks
sumber
0

Mungkin saja file yang Anda akses memiliki salinan swap (atau versi swap) yang sudah ada di direktori yang sama

Karenanya pertama-tama lihat apakah ada file tersembunyi atau tidak.

Sebagai contoh, lihat untuk jenis file berikut

.system.conf.swp

Dengan menggunakan perintah

ls -a

Dan kemudian, hapus menggunakan ...

rm .system.conf.swp

Biasanya, saya sarankan untuk mulai menggunakan hak pengguna super menggunakan ...

sudo su
Abdullah Khilji
sumber
0

Saya mendapatkan kesalahan ini ketika saya menggunakan git rm file dalam direktori.

Saya berada di sesuatu seperti ~ / gitRepo / code / newFeature

Di newFeature hanya ada satu file. Saya melakukangit rm pada file itu kemudian mencoba membuat file baru myNewFile menggunakan vi.

Ubuntu menunjukkan saya masih berada di dalam direktori newFeature tetapi sebenarnya git rm telah menghapus seluruh direktori.

Saya harus keluar dari vi, menavigasi satu direktori dan kemudian membuat ulang direktori newFeature.

DatabaseShouter
sumber
-2

Anda hanya perlu mengakses Gemfile dengan akses root. Sebelumvi :

perintah:

sudo su -

kemudian:

vi ~/...
Ali G
sumber