/etc/apt/sources.list "E212 : 쓰기 위해 파일을 열 수 없습니다


178

vi 편집기를 사용하여 sources.list를 편집하려고하는데 파일을 저장하는 동안 다음 오류가 발생합니다.

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

1
파일을 쓰려고하는 디렉토리가 최대 값을 초과 할 때 이것을 얻었습니다. 디스크 사용량
Mehdi Nellen

1
답변 중 하나에 언급 된 주석으로 파일이있는 폴더가 삭제되었거나 처음에 존재하지 않은 경우이 정보를 얻을 수 있습니다. 상황에 따라 디렉토리를 변경하거나 vi에서 디렉토리를 작성하는 명령을 찾으십시오.
kon psych

답변:


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에는 내장 도움말 시스템이 있습니다. 방금 말한 것을 인용했습니다 :h E212.

파일을 수퍼 유저로 편집 할 수 있습니다 sudo vim FILE. 또는 기존 vim 세션을 종료하지 않으려는 경우 (이제 적절한 sudo 권한을 가짐) 다음을 발행 할 수 있습니다.

:w !sudo tee % > /dev/null

파일을 저장할 것입니다.

HTH


54
감사! 필자의 경우 존재하지 않는 디렉토리에서 존재하지 않는 파일을 편집하려고했습니다. 존재하지 않는 파일을 "열고"저장하여 파일을 만들 수 있지만 존재하지 않는 디렉토리에서는 작동하지 않습니다. 그리고 저는 Vim의 내장 된 도움말 시스템에 대해 알고 있습니다! :)
Dom Delimar

감사! 필자의 경우 네트워크 드라이브에 쓰려고했지만 해당 화면 세션에 대한 네트워크 권한이 부분적으로 충돌했습니다. 나는 / var의 임시 파일에 쓰고 다른 ssh 인스턴스에서 내 홈 디렉토리로 복사했습니다.
Ross Aiken



: h 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은 모든 권한을 의미합니다. 퍼센트는 현재 파일 이름을 의미합니다.

변경 사항이 적용됩니다. 그리고 다시로드 할 것인지 묻습니다. "확인"에 대해 "O"를 누릅니다. 다시로드하지 않으면 변경 사항이 손실됩니다.


13

나에게는 아주 간단한 해결책이있었습니다. 존재하지 않는 폴더에서 파일 을 편집 / 작성 하려고했습니다 . 이미 폴더에 있었기 때문에 파일 을 편집 / 만들 려고 했습니다.

pwd folder/file

그리고 입력했다

sudo vim folder/file

오히려 폴더에서 폴더를 찾고 저장하지 못했습니다.


9

또는 아마도 당신은 읽기 전용 마운트 fs에 있습니다


1
이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남기십시오.
DmitryG

13
@DmitryG 여기에는 질문이 없으며 상황 만 언급되어 있습니다. 이것이 바로 내가 같은 상황에 처한 이유였으며 사람들이 그것에 대해 아는 것이 유용하다고 생각합니다.
kellogs

5

레벨 2에서 Zsolt를 참조했으며 다음을 입력했습니다.

:w !sudo tee % > /dev/null

내 상황에서 여전히 파일을 수정할 수 없으므로 "!"를 추가하라는 메시지가 표시됩니다. 그래서 나는 입력

:q! 

그런 다음 작동합니다


2
파일을 끝내지 않고 저장하지 않습니까?
jsibs

3

vim을 실행하기 전에 파일 시스템을 읽기 전용에서 변경하는 작업을 수행했습니다.

bash-3.2# mount -o remount rw /

1

루트로 연결 한 다음 파일을 편집하십시오. 이것은 나를 위해 작동


1

vim에서 파일을 열 때 sudo를 사용하십시오. 즉 : sudo vim 텍스트 파일. 문제가 해결됩니다.


도움을 주셔서 감사합니다!
파 섹터

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 

저장해. 루트 사용자를 사용자로 변경하십시오. 이제 sudoers 문제가 발생한 곳에서 동일한 시도


0

액세스중인 파일이 동일한 디렉토리에 이미 스왑 사본 (또는 스왑 버전)을 가지고있을 수 있습니다.

따라서 먼저 숨겨진 파일이 있는지 확인하십시오.

예를 들어, 다음 유형의 파일을 참조하십시오

.system.conf.swp

명령을 사용하여

ls -a

그런 다음 ...을 사용하여 삭제하십시오.

rm .system.conf.swp

일반적으로 ...를 사용하여 슈퍼 사용자 권한을 사용하는 것이 좋습니다.

sudo su

0

git rm디렉토리의 파일을 사용할 때이 오류가 발생했습니다 .

~ / gitRepo / code / newFeature와 같은 것이 었습니다.

newFeature에는 파일이 하나만있었습니다. 내가했던 git rm다음 VI를 사용하여 새 파일 myNewFile을 만들려고 그 파일에.

우분투는 나에게 여전히 newFeature 디렉토리 안에 있음을 보여 주었지만 실제로 git rm전체 디렉토리를 제거했습니다.

vi를 종료하고 한 디렉토리를 탐색 한 다음 newFeature 디렉토리를 다시 작성해야했습니다.


-2

루트 액세스 권한으로 Gemfile에 액세스하면됩니다. 전 vi:

명령:

sudo su -

그때:

vi ~/...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.