/etc/apt/sources.list "E212: no se puede abrir el archivo para escribir

178

Estoy tratando de editar sources.list usando el editor vi pero obtengo el siguiente error al guardar el archivo:

/etc/apt/sources.list" E212: Can't open file for writing
codificadores del oscuro
fuente
1
Obtuve esto cuando el directorio en el que estaba tratando de escribir el archivo excedió su máximo. uso del disco
Mehdi Nellen
1
Como un comentario mencionado en una de las respuestas, puede obtener esto si la carpeta en la que reside el archivo se ha eliminado o no existía en primer lugar. Busque comandos para cambiar el directorio o crear un directorio desde vi, según la situación.
kon psych

Respuestas:

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 tiene un sistema de ayuda incorporado. Acabo de citar lo que dice :h E212.

Es posible que desee editar el archivo como superusuario como sudo vim FILE. O si no desea abandonar su sesión vim existente (y ahora tiene los derechos de sudo adecuados), puede emitir:

:w !sudo tee % > /dev/null

Lo que guardará el archivo.

HTH

Zsolt Botykai
fuente
54
¡Gracias! En mi caso, estaba tratando de editar un archivo no existente en un directorio no existente. Resulta que, si bien puede "abrir" un archivo no existente y luego crearlo guardándolo, esto no funciona con un directorio no existente. ¡Y ahora sé sobre el sistema de ayuda incorporado de Vim! :)
Dom Delimar
¡Gracias! En mi caso, estaba tratando de escribir en una unidad de red, y mis permisos de red se habían bloqueado parcialmente para esa sesión de pantalla. Terminé escribiendo en un archivo temporal en / var y copiando eso desde otra instancia de ssh a mi directorio de inicio.
Ross Aiken
Revertió una edición no válida .
apilador de clase el
@Xinus mira esto: stackoverflow.com/questions/2600783/…
Zsolt Botykai
: h E212 dice: ".bashrc" E212: No se puede abrir el archivo para escribir E433: No hay archivo de etiquetas E149: Lo siento, no hay ayuda para E212
hello_there_andy
26

Eso me pasa todo el tiempo, abro un archivo raíz para escribir:

En lugar de perder todos tus cambios y volver a abrir con sudo. Vea esta demostración de cómo guardar esos cambios:

Demostración de configuración única para crear un archivo de solo lectura propiedad de la raíz para un usuario inferior:

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

Primero abra el archivo como usuario normal:

vi temp.txt

Luego haga algunos cambios en el archivo, le advierte que es de solo lectura. Usa este comando.

:w !chmod 777 %

Luego escribe el archivo:

:wq!

Los permisos se expanden y el archivo se guarda. Necesita el signo de exclamación porque está editando un archivo raíz como un usuario menor.

Explicación de lo que hace ese comando:

El: w significa escribir el archivo. La explosión significa comenzar a interpretar como shell. chmod significa permisos de cambio, 777 significa permisos completos en todas partes. El porcentaje significa el nombre del archivo actual.

Aplica el cambio. Y le pregunta si desea volver a cargar. Presione "O" para "Ok". No recargue o perderá sus cambios.

Eric Leschinski
fuente
13

Para mí había una solución bastante simple. Intenté editar / crear un archivo en una carpeta que no existía. Como ya estaba en la carpeta, estaba tratando de editar / crear un archivo.

es decir pwd folder/file

y estaba escribiendo

sudo vim folder/file

y, obviamente, estaba buscando la carpeta en la carpeta y no pudo guardar.

Simón
fuente
9

O tal vez estás en un fs de solo lectura

Kellogs
fuente
1
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación.
DmitryG
13
@DmitryG No se hace ninguna pregunta aquí, solo se establece una situación. Esta fue la razón por la que me metí en la misma situación y creo que a la gente le resultaría útil saberlo.
Kellogs
5

Hice referencia a Zsolt en el nivel 2, ingresé:

:w !sudo tee % > /dev/null

y luego, en mi situación, todavía no puedo modificar el archivo, por lo que me solicitó que agregue "!". entonces ingreso

:q! 

entonces funciona

Oscar Zhou1989
fuente
2
¿Esto no solo cierra el archivo y no lo guarda?
jsibs
3

para mí trabajé cambiando el sistema de archivos de solo lectura antes de ejecutar vim:

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

Intente conectarse como root y luego edite el archivo. Esto funciona para mi

Kazman
fuente
1

Cuando abra el archivo en vim, use sudo. es decir: sudo vim textfile. Esto resolverá el problema.

Bugz
fuente
¡Gracias, ayudó!
analizador
1

cambiar usuario a root

sodu su -

navegar a etc.

vi sudoers

busque el usuario root en la sección de privilegios de usuario. lo conseguirás como

root ALL=(ALL:ALL) ALL 

haga la misma entrada para su nombre de usuario. si su nombre de usuario es 'myuser', agregue

myuser ALL=(ALL:ALL) ALL

se verá como

root ALL=(ALL:ALL) ALL 

myuser ALL=(ALL:ALL) ALL 

guárdalo cambie el usuario root a su usuario. ahora intenta lo mismo donde estabas teniendo el problema de los sudoers

Somspeaks
fuente
0

Es posible que el archivo al que está accediendo tenga una copia de intercambio (o una versión de intercambio) ya en el mismo directorio

Por lo tanto, primero vea si existe un archivo oculto o no.

Por ejemplo, vea el siguiente tipo de archivos

.system.conf.swp

Al usar el comando

ls -a

Y luego, bórrelo usando ...

rm .system.conf.swp

Por lo general, recomiendo comenzar a usar privilegios de superusuario usando ...

sudo su
Abdullah Khilji
fuente
0

Recibí este error cuando lo usé git rmen un archivo en un directorio.

Estaba en algo como ~ / gitRepo / code / newFeature

En newFeature solo había un archivo. Hice un git rmen ese archivo y luego intenté crear un nuevo archivo myNewFile usando vi.

Ubuntu me mostró que todavía estaba dentro del directorio newFeature pero en realidad git rmhabía eliminado todo el directorio.

Tuve que salir de vi, navegar por un directorio y luego volver a crear el directorio newFeature.

DatabaseShouter
fuente
-2

Solo necesita acceder a Gemfile con acceso root. antes devi :

mando:

sudo su -

luego:

vi ~/...
Ali G
fuente