/etc/apt/sources.list "E212: не удается открыть файл для записи - PullRequest
158 голосов
/ 24 ноября 2011

Я пытаюсь редактировать sources.list с помощью редактора vi, но при сохранении файла получаю следующую ошибку:

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

Ответы [ 10 ]

239 голосов
/ 24 ноября 2011
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

Который сохранит файл.

НТН

26 голосов
/ 06 декабря 2014

Это происходит со мной все время, я открываю корневой файл для записи:

Вместо потери всех ваших изменений и повторного открытия с помощью sudo. Посмотрите демонстрацию того, как сохранить эти изменения:

Демонстрация однократной установки для создания файла с правами root только для чтения для пользователя нижнего уровня:

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 означает полные права доступа везде. Процент означает текущее имя файла.

Применяет изменение. И это спросить, если вы хотите перезагрузить. Нажмите «О» для «ОК». Не перезагружайте, иначе вы потеряете свои изменения.

9 голосов
/ 29 февраля 2016

Для меня было довольно простое решение.Я пытался отредактировать / создать файл в несуществующей папке.Поскольку я уже находился в папке, я пытался отредактировать / создать файл в.

т.е.1012 * и, скорее всего, он искал папку в папке и не смог ее сохранить.

9 голосов
/ 16 мая 2013

Или, возможно, вы подключены только для чтения fs

3 голосов
/ 24 июля 2017

у меня работало, меняя файловую систему с Read-Only перед запуском vim:

bash-3.2# mount -o remount rw /
3 голосов
/ 13 мая 2017

Я ссылаюсь на Жолта на уровне 2, я ввожу:

:w !sudo tee % > /dev/null

и затем в моей ситуации я все еще не могу изменить файл, поэтому он предложил добавить «!». поэтому я ввожу

:q! 

тогда работает

0 голосов
/ 28 июня 2018

Я получил эту ошибку, когда использовал git rm для файла в каталоге.

Я был в чем-то вроде ~ / gitRepo / code / newFeature

В newFeature был только один файл. Я сделал git rm для этого файла, затем попытался создать новый файл myNewFile, используя vi.

Ubuntu показала, что я все еще в каталоге newFeature, но на самом деле git rm удалила весь каталог.

Мне пришлось выйти из vi, перейти вверх по одному каталогу, а затем заново создать каталог newFeature.

0 голосов
/ 13 марта 2018

Возможно, что файл, к которому вы обращаетесь, имеет копию подкачки (или версию подкачки), уже находящуюся в том же каталоге

Следовательно, сначала посмотрите, существует скрытый файл или нет.

Например, см. Для следующего типа файлов

.system.conf.swp

С помощью команды

ls -a

А затем удалите его, используя ...

rm .system.conf.swp

Обычно я рекомендую начать использовать привилегии суперпользователя, используя ...

sudo su
0 голосов
/ 08 марта 2017

Попробуйте подключиться как root и затем отредактируйте файл. Это работает для меня

0 голосов
/ 04 сентября 2015

Вам просто нужно получить доступ к Gemfile с правами root.До vi:

команда:

sudo su -

затем:

vi ~/...
...