Domanda Impossibile bloccare la directory di amministrazione (/ var / lib / dpkg /) è un altro processo che lo utilizza?


Ottengo questo errore quando provo a usare apt-get:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?  

Come posso risolvere questo?


837
2017-11-30 02:12


origine


Questo è anche vero se si riavvia? Forse qualche vecchio thread apt blocca il file, devi scoprire quale e ucciderlo o solo il riavvio lo farà. - Bruno Pereira
Questa procedura quasi sempre risolve questo problema, e quando non lo fa, il suo output (il testo dal Terminale) a volte è utile. Se decidi di farlo, puoi aggiungere questo testo alla tua domanda. - Eliah Kagan
Vorrei suggerire un'altra cosa che potresti notare di fronte a questo problema. Controlla se le tue unità disco sono montate. In caso contrario, potrebbe non essere possibile acquisire il blocco poiché il programma di installazione del pacchetto non sarà in grado di accedere al filesystem. Spero che questo ti aiuti. :) - Hari
Puoi usare sudo lsof /var/lib/dpkg/lock per trovare il processo che possiede il file di blocco (se vuoto, si supponga che il blocco sia rimasto da un avvio precedente e che possa esserlo sudo rmd), quindi considera di fare un sudo kill -9 <PID> (ottenere <PID> da lsof produzione. - waltinator
Questo può essere un segno che qualcos'altro sta installando o rimuovendo software e ha bloccato il database apt mentre esegue le azioni. - Foreever


risposte:


Questo dovrebbe essere usato come ultima risorsa. Se lo usi con noncuranza, puoi ritrovarti con un sistema rotto. Per favore prova il altro  risposte  primo prima di fare questo

È possibile eliminare il file di blocco con il seguente comando:

sudo rm /var/lib/apt/lists/lock

Potrebbe inoltre essere necessario eliminare il file di blocco nella directory della cache

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

Successivamente, prova ad aprire nuovamente Synaptic.


719
2018-02-07 02:22



ok ... ma perché è successo questo? - Jaime Hablutzel
@jaime: probabilmente apt-get (o un frontend della GUI ad esso) è stato fermato durante l'esecuzione, lasciando apt in uno stato bloccato. - bouke
Lo accetterei come la migliore risposta. correggi uno. - Anwar
@AnwarShah no, ci sono altre considerazioni prima di andare in giro a rimuovere i file del sistema. - Braiam
rm / var / lib / dpkg / lock; dpkg --configure -a: - WitchCraft


Vedo che praticamente tutte le risposte raccomandano l'eliminazione del lucchetto. Non consiglio di farlo come prima misura; forse se non ci sono alternative. Il blocco viene inserito quando è in esecuzione un processo apt e viene rimosso al termine del processo. Se c'è un blocco senza processo apparente in esecuzione, questo potrebbe significare che il processo si è bloccato per qualche motivo.

Se provi

ps aux | grep apt

quello prenderà i processi che contengono la parola apt, almeno. Se vedi un apt-get processo o un aptitude processo che sembra bloccato, puoi provare

kill processnumber

e se non funziona prova

kill -9 processnumber

Questo dovrebbe uccidere il processo e potrebbe rimuovere il lucchetto. Uccidere un apt o aptitude il processo è innocuo a meno che non sia effettivamente nel mezzo dell'installazione del pacchetto. In ogni caso, se il processo si è bloccato, probabilmente non hai altra scelta che ucciderlo.

Uccidere a dpkg processo direttamente, se presente, non è una buona idea, perché se dpkg è attivo, probabilmente sta manipolando il database del pacchetto e ucciderlo potrebbe lasciare il database del pacchetto in uno stato incoerente; cioè corrotto.

Uccidere un apt-get o aptitude il processo è in generale molto più sicuro.


548
2017-07-03 09:01



@Link Non penso di uccidere dpkg è una buona idea, perché di solito dpkg sta manipolando direttamente il database del pacchetto e questo potrebbe causare il danneggiamento. - Faheem Mitha
Se uccidere dpkg può danneggiare il suo database, dpkg è stato progettato male. Periodo. - Jay Sullivan
per me, questo ha comportato un errore dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. durante la corsa sudo apt-get dist-upgrade ancora. L'esecuzione del comando ha quindi risolto il problema. Amo Nix! - Wayne Phipps
Nota, killall apt-get fa la stessa cosa del tuo ps/kill combo. - Cerin
Si noti che ho scoperto che avevo bisogno di correre sudo dkpg --configure -a dopo aver ucciso il processo apt rogue in modo che le cose tornino alla normalità. - starbeamrainbowlabs


Rimuovi il tuo /var/lib/dpkg/lock file e forza la riconfigurazione del pacchetto.

sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a

Dovrebbe funzionare dopo questo.


175
2018-01-29 11:27



questi comandi hanno aiutato, ma ora quando ho provato a installare di nuovo, ho ottenuto questa risposta: Impossibile ottenere il blocco / var / cache / apt / archives / lock - open. Penso che dovrei fare come il precedente problema di sblocco, ma per favore dimmi le parole chiave esatte per il comando. Sono un principiante assoluto. - kern
sudo - esegui il comando come root, rm - Rimuovi il file. Forse prova sudo rm /var/cache/apt/archives/lock - kubahaha
Questo non è un buon suggerimento: rimuovere ciecamente la fortuna può corrompere lo stato di dpkg. - poolie
Perché non si aggiusta se stesso al giorno d'oggi? - Marian Klühspies
Questo ha funzionato per me. Gli aw sopra non lo facevano. - 1rq3fea324wre


Riceverai questo messaggio se ti dimentichi di usarlo sudo quando si esegue un comando apt.

Altrimenti questo è un segno che qualcos'altro sta installando o rimuovendo software e ha bloccato il database apt mentre esegue le azioni. I programmi che possono farlo sono:

  • Il Centro Software
  • Il gestore aggiornamenti
  • Il programma di installazione di link apt (penso che questo ora passi attraverso SC)
  • Le utilità della riga di comando apt-get o aptitude.
  • Il gestore di pacchetti Synaptic

IMPORTANTE: prova solo il sotto come ultima risorsa dal momento che può mandare in crash il tuo sistema. Prima prova a uccidere qualsiasi istanza in esecuzione di apt o aptitude come descritto in La risposta di Faheem.

È possibile forzare il blocco rimuovendo il file, ma non è raccomandato senza prima chiudere il programma che tiene il lucchetto in sicurezza, dal momento che potresti causare il danneggiamento o interrompere un'installazione (cattiva). Il comando fornito da João dovrebbe chiudere il programma che contiene il blocco e quindi rimuovere il blocco ma non ti proteggerà dall'interruzione dell'installazione:

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   

E lo stesso comando può essere usato per il blocco della cache apt:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

96
2017-11-30 02:17



Stavo aggiornando il mio software quando ho ricevuto il messaggio di errore. - raindrop
Questo si è schiantato per me- - umpirsky
sudo fuser -cuk /var/cache/apt/archives/lock riavviato direttamente il mio computer. apt-get è ora sbloccato. - Maxime R.
Questo ha bloccato il mio intero server. - 에이바
Uccidere apt o dpkg a metà strada non è una grande idea. - poolie


Il modo più probabile per farlo è:

  • avviare Ubuntu
  • avviare un terminale
  • genere sudo apt-get install whatever

e la riga di comando apt si sovrappone con update-manager polling automatico.

Quindi, se provi di nuovo tra qualche minuto, dovresti risolverlo.


66
2017-11-30 03:08



Un grande suggerimento in contrasto con la mezza dozzina di risposte che suggeriscono di rimuovere solo il file ;-) Ho eseguito a caso il problema e molto probabilmente questo è tutto! - Alex
Abbastanza sicuro, ha dovuto aspettare un po 'prima sudo apt-get install potrebbe funzionare. - sargas
Beh, questo non funziona sempre, sì ho usato il riavvio più volte. Se non è adatto prova questo askubuntu.com/a/315791/378845 prima di rimuovere le serrature - Menuka Ishan
@ Menuka, perché non lasciare che finisca. - poolie
@poolie Perché ci sono altri vincoli che impediscono il completamento del processo - Menuka Ishan


Solo un programma può contenere il blocco. Assicurati di non eseguire aptitude, synaptic o adept. Chiudere il programma ed eseguirlo di nuovo dovrebbe funzionare. Si può avere Synaptic aperto, o avere un'altra finestra di terminale aperta con apt-get o avere il gestore di aggiornamento in esecuzione. Controllare e vedere se qualcuno di questi è in esecuzione, se c'è ne loro stanno correndo vicino e riprovano.

Prova questo comando nel terminale per trovare ciò che è in esecuzione

ps -e | grep -e apt -e adept | grep -v grep

Nota:
Se ciò non stampa nulla, digitare quanto segue nel terminale per rimuovere il blocco

sudo rm /var/lib/dpkg/lock    
sudo rm /var/cache/apt/archives/lock

Ora puoi installare qualsiasi pacchetto.


48
2017-11-30 04:55



L'eliminazione del file di blocco è, cosa che considererei, una cosa pericolosa da fare. Se un altro processo sta bloccando per un motivo valido - e rimuovi quel file di blocco e imponi un'installazione con quello che stavi facendo in precedenza - potresti seriamente, in modo negativo, influenzare il tuo sistema. - Marco Ceppi♦
Ecco perché l'ho detto in Note.Se tutto questo non funziona, l'unico modo è rimuovere il blocco. Non causerà alcun problema finché i processi dpkg e apt-get / aptitude non sono in esecuzione - karthick87
pgrep -f 'apt|adept|dpkg'è molto più breve - Barry
Grazie! questo funziona pgrep -f 'apt | adept | dpkg' e poi sudo skill (numero), uccide tutti i numeri e poi installa works! - creator


Finora il modo migliore per farlo funzionare senza interrompere una possibile installazione in background (come potrebbe accadere rimuovendo il file di blocco), sta bloccando il servizio usando apt:

Errore:

# sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?`

Soluzione:

sudo systemctl stop apt-daily.timer

Dopo aver aggiornato il sistema, ti suggerisco di riattivarlo, poiché il problema potrebbe essere risolto con l'aggiornamento.

sudo systemctl start apt-daily.timer 

Non ho verificato che questo errore venga corretto dopo l'aggiornamento. Aggiungerò un nuovo commento una volta verificato ciò


34
2018-02-02 10:01



Dopo aver aggiornato il sistema e riavviato il servizio apt-daily.timer, non ho ancora affrontato questo problema. - Jairelee
Questo ha risolto il mio problema, grazie. - inkredibl
Questo è probabilmente il metodo più pulito rispetto a tutte quelle risposte votate più in alto. Ha funzionato nel mio caso in modo impeccabile, grazie! - CygnusX1
Questo ha funzionato perfettamente anche il 17.10 - Elder Geek
Funzionante bene nel 18.04. :) - Naveen Kumar V


Prima di tutto dovremmo controllare quale processo ha creato il file di lock usando lsof:

sudo lsof /var/lib/dpkg/lock

o in un'altra situazione in cui /var/lib/apt/lists/lock è problematico:

sudo lsof /var/lib/apt/lists/lock

L'output sarà vicino a qualcosa come:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock

Quindi dovremmo controllare cosa sta facendo il comando, possiamo scoprirlo usando ps, pgrep eccetera; il comando è apt-get quindi corro:

pgrep apt-get -a

Il -a switch elenca il comando completo per me, nel mio caso è:

 pgrep -a apt-get
 12127 apt-get update

possiamo vedere che è in esecuzione update sottocomando, potrei eseguire anche qualcosa di simile:

ps -f 12127

che produce:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update

In questo caso, aspetterei qualche minuto prima che la risorsa venga liberata e se dopo 2 o 3 minuti il ​​problema esiste ancora o il comando era qualcosa di cui non mi importava o che non era dannoso per il sistema (come questo apt-get update) Invio a SIGTERM al processo:

sudo kill -15 12127

Dovrebbe fare il lavoro, se non lo avessi mandato SIGINT questa volta (è come premere CTRL+C):

sudo kill -2 12127

Se non ha funzionato, dovremmo inviare un SIGHUP (kill -1), e infine se nulla funziona, semplicemente uccido il processo:

sudo kill -9 12127

o

sudo pkill -9 apt-get

Quindi rimuovo le risorse occupate:

sudo rm /var/lib/apt/lists/lock

24
2018-04-24 07:29



Una piccola cosa è quella /var/lib/dpkg/lock piuttosto che /var/lib/apt/lists/lock è il file nella domanda. - Chai T. Rex
@ ChaiT.Rex grazie, ha fatto un aggiornamento;) - Ravexina
Ringrazia gli dei della radice che qualcuno finalmente menziona pgrep e pkill. - Barry
Questa dovrebbe essere la risposta accettata. - Marwan Nabil