web-dev-qa-db-ja.com

/etc/apt/sources.list "E212:書き込み用にファイルを開けません

Viエディタを使用してsources.listを編集しようとしていますが、ファイルの保存中に次のエラーが発生します。

/etc/apt/sources.list" E212: Can't open file for writing
155
codersofthedark
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にはヘルプシステムが組み込まれています。私はちょうどそれが:h E212に言っていることを引用しました。

Sudo vim FILEのようにスーパーユーザーとしてファイルを編集することができます。既存のVimセッションを離れたくない(そして今では適切なSudo権限を持っていない)場合は、次のコマンドを発行できます。

:w !Sudo tee % > /dev/null

これでファイルが保存されます。

HTH

237
Zsolt Botykai

それはいつも私に起こります、私は書くためにルートファイルを開きます:

すべての変更を失い、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は至る所でフルパーミッションを意味します。パーセントは現在のファイル名を意味します。

変更が適用されます。そしてそれはあなたが再ロードしたいかどうか尋ねます。 "Ok"のために "O"を押してください。リロードしないでください。変更を失うことになります。

25
Eric Leschinski

それとも、あなたは読み取り専用でマウントされたfsにいます

9
kellogs

私にとっては非常に単純な解決策がありました。存在しないフォルダ内のファイルを編集しようとしていました。私はすでにフォルダにいたので、でファイルを編集/作成していました。

すなわちpwd folder/file

そしてタイピングしていた

Sudo vim folder/file

それどころか明らかにそれはフォルダ内のフォルダを探していて保存に失敗していました。

9
Simon

私はレベル2でZsoltを参照しました、私は入力します:

:w !Sudo tee % > /dev/null

それから私の状況では、私はまだファイルを変更することができないので、それは "!"を追加するよう促しました。だから私は入力

:q! 

それからそれは働く

3
Oscar Zhou1989

私はvimを実行する前にファイルシステムを読み取り専用から変更する作業をしていました。

bash-3.2# mount -o remount rw /

アクセスしているファイルのスワップコピー(またはスワップバージョン)がすでに同じディレクトリにある可能性があります。

したがって、まず隠しファイルが存在するかどうかを確認してください。

たとえば、次の種類のファイルについてはを参照してください。

.system.conf.swp

コマンドを使用して

ls -a

そして、それを使って削除します...

rm .system.conf.swp

通常、私は使用してスーパーユーザー特権を使い始めることをお勧めします...

Sudo su
0
Abdullah Khilji

Rootとして接続してからファイルを編集してください。これは私のために働く

0
Kazman

ディレクトリ内のファイルでgit rmを使用したときにこのエラーが発生しました。

私は〜/ gitRepo/code/newFeatureのようなものにいました

NewFeatureでは、ファイルは1つしかありませんでした。そのファイルに対してgit rmを実行し、次にviを使用して新しいファイルmyNewFileを作成しようとしました。

Ubuntuは私にまだnewFeatureディレクトリの中にいるように見せてくれましたが、実際にはgit rmはディレクトリ全体を削除しました。

私はviを終了し、1つ上のディレクトリに移動してからnewFeatureディレクトリを作り直す必要がありました。

0
DatabaseShouter