Sto cercando di modificare sources.list usando l'editor vi ma sto ottenendo il seguente errore durante il salvataggio del file:
/etc/apt/sources.list" E212: Can't open file for writing
Sto cercando di modificare sources.list usando l'editor vi ma sto ottenendo il seguente errore durante il salvataggio del file:
/etc/apt/sources.list" E212: Can't open file for writing
Risposte:
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 ha un sistema di aiuto integrato. Ho appena citato ciò che dice :h E212
.
Potresti voler modificare il file come superutente come sudo vim FILE
. Oppure, se non vuoi lasciare la tua sessione vim esistente (e ora hai i diritti sudo corretti), puoi emettere:
:w !sudo tee % > /dev/null
Che salverà il file.
HTH
Invece di perdere tutte le modifiche e riaprire con sudo. Guarda questa demo su come salvare queste modifiche:
Demo di installazione una volta per creare un file di sola lettura di proprietà root per un utente inferiore:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
Per prima cosa apri il file come utente normale:
vi temp.txt
Quindi apporta alcune modifiche al file, ti avverte che è di sola lettura. Usa questo comando
:w !chmod 777 %
Quindi scrivi il file:
:wq!
Le autorizzazioni vengono espanse e il file viene salvato. È necessario il punto esclamativo perché si sta modificando un file root come utente minore.
Spiegazione di cosa fa quel comando:
Il: w significa scrivere il file. Il botto significa iniziare a interpretare come shell. chmod significa cambiare le autorizzazioni, 777 significa autorizzazioni complete ovunque. La percentuale indica il nome del file corrente.
Applica la modifica. E chiede se si desidera ricaricare. Premere "O" per "Ok". Non ricaricare o perderai le modifiche.
Per me c'era una soluzione abbastanza semplice. Stavo cercando di modificare / creare un file in una cartella che non esisteva. Dato che ero già nella cartella, stavo cercando di modificare / creare un file.
vale a dire pwd folder/file
e stava scrivendo
sudo vim folder/file
e piuttosto ovviamente stava cercando la cartella nella cartella e non riusciva a salvare.
O forse sei su un fs di sola lettura
Ho fatto riferimento a Zsolt nel livello 2, ho inserito:
:w !sudo tee % > /dev/null
e poi nella mia situazione, non riesco ancora a modificare il file, quindi mi ha chiesto di aggiungere "!". così ho inserito
:q!
allora funziona
per me ha funzionato cambiando il filesystem da Sola lettura prima di eseguire vim:
bash-3.2# mount -o remount rw /
cambia utente in root
sodu su -
vai a ecc
vi sudoers
cerca l'utente root nella sezione privilegi utente. lo otterrai come
root ALL=(ALL:ALL) ALL
inserisci la stessa voce per il tuo nome utente. se il tuo nome utente è "mioutente", aggiungi
myuser ALL=(ALL:ALL) ALL
sembrerà
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
salvarla. cambia l'utente root nel tuo utente. ora prova lo stesso dove stavi riscontrando il problema sudoers
Potrebbe essere possibile che il file a cui si accede abbia una copia di scambio (o versione di scambio) già presente nella stessa directory
Quindi prima controlla se esiste o meno un file nascosto.
Ad esempio, vedere per il seguente tipo di file
.system.conf.swp
Usando il comando
ls -a
E poi, cancellalo usando ...
rm .system.conf.swp
Di solito, consiglio di iniziare a usare i privilegi di superutente usando ...
sudo su
Ho ricevuto questo errore quando l'ho usato git rm
su un file in una directory.
Ero in qualcosa come ~ / gitRepo / code / newFeature
In newFeature c'era solo un file. Ho fatto un git rm
file su quel file, quindi ho provato a creare un nuovo file myNewFile usando vi.
Ubuntu mi ha mostrato di essere ancora nella directory newFeature ma in realtà git rm
aveva rimosso l'intera directory.
Ho dovuto uscire da vi, navigare su una directory e quindi ricreare la nuova directory Funzionalità.