Impossibile bloccare la directory di amministrazione (/ var / lib / dpkg /) viene utilizzata da un altro processo?


1025

Ottengo questo errore quando provo ad 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 problema?


18
Questo vale anche se riavvii? Forse un vecchio thread apt sta bloccando il file, devi scoprire quale e ucciderlo o semplicemente il riavvio lo farà.
Bruno Pereira,

4
Questa procedura risolve quasi sempre questo problema e, in caso contrario, il suo output (il testo dal Terminale) è talvolta utile. Se decidi di farlo, puoi aggiungere questo testo alla tua domanda.
Eliah Kagan,

54
Puoi usare sudo lsof /var/lib/dpkg/lockper trovare il processo che possiede il file di blocco (se vuoto, supponi che il blocco sia rimasto da un avvio precedente e possa essere sudo rmd), quindi considera di fare un sudo kill -9 <PID>(ottieni <PID> lsofdall'output.
waltinator

11
Questo può essere un segno che qualcos'altro sta installando o rimuovendo software e ha bloccato il database apt mentre esegue le azioni.
sempre il

5
Sulla mia macchina virtuale Ubuntu 18.04 c'è un processo chiamato unattended-update, che viene eseguito da un processo simile root <pid> <ppid> 0 15:58 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install, che sembra eseguire apt update ogni volta che accendo la macchina. A seconda delle dimensioni dell'aggiornamento (che spesso corrisponde a quanto tempo fa da quando ho usato quella macchina l'ultima volta), questo può richiedere da 1 a 10 minuti per il completamento. Successivamente, il blocco viene liberato per installazioni e aggiornamenti apt manuali. Prova: sudo ps aux|grep apto `sudo ps aux | grep incustodito.
Kjetil S.

Risposte:


874

Questo dovrebbe essere usato come ultima risorsa. Se lo usi con noncuranza puoi finire con un sistema rotto. Si prega di provare le altre risposte prima 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 di nuovo Synaptic.


13
ok ... ma perché è successo?
Jaime Hablutzel,

40
@jaime: probabilmente apt-get (o qualche frontend GUI ad esso) è stato arrestato durante l'esecuzione, lasciando apt in uno stato bloccato.
bouke,

10
Lo accetterei come la migliore risposta. quello corretto.
Anwar,

9
@AnwarShah no, ci sono altre considerazioni prima di andare in giro a rimuovere i file del sistema.
Braiam,

22
rm / var / lib / dpkg / lock; dpkg --configure -a:
WitchCraft

664

Vedo praticamente tutte le risposte che raccomandano di eliminare il blocco. 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 è presente un blocco senza processo apparente in esecuzione, ciò potrebbe significare che il processo si è bloccato per qualche motivo.

Se provi

ps aux | grep [a]pt

o

pgrep -a apt

che catturerà aptalmeno i processi contenenti la parola . Se vedi un apt-getprocesso o un aptitudeprocesso che sembra bloccato, puoi provare

sudo kill processnumber

e se non funziona, prova

sudo kill -9 processnumber

Ciò dovrebbe interrompere il processo e rimuovere il blocco. Uccidere un apto un aptitudeprocesso è 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 dpkgdirettamente un processo, 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-geto un aptitudeprocesso è generalmente molto più sicuro.


18
@Link Non penso che uccidere dpkgsia una buona idea, perché di solito dpkgsta manipolando direttamente il database dei pacchetti, e questo potrebbe causare corruzione.
Faheem Mitha,

18
Se uccidere dpkg può corrompere il suo database, dpkg è stato progettato male. Periodo.
Jay Sullivan,

10
per me, questo ha provocato un errore dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.durante l'esecuzione di sudo apt-get dist-upgradenuovo. L'esecuzione del comando ha quindi risolto il problema. Adoro Nix!
Wayne Phipps,

5
Nota, killall apt-getfa la stessa cosa del tuo ps/ killcombo.
Cerin,

3
Si noti che ho scoperto che dovevo correre sudo dkpg --configure -adopo aver ucciso il processo apt errato affinché le cose tornassero alla normalità.
Starbeamrainbowlabs

219

Rimuovere il /var/lib/dpkg/lockfile e forzare la riconfigurazione del pacchetto.

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

Dovrebbe funzionare dopo questo.


questi comandi mi hanno aiutato, ma ora quando ho provato a installare di nuovo, ho ottenuto questa risposta: Impossibile ottenere lock / 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

1
sudo- esegue il comando come root, rm- rimuove il file. Forse provacisudo rm /var/cache/apt/archives/lock
kubahaha,

5
Questo non è un buon suggerimento: rimuovere ciecamente la fortuna può corrompere lo stato di dpkg.
poolie,

5
Perché al giorno d'oggi non si risolverà da solo?
Marian Klühspies,

2
Questo ha funzionato per me. I aws sopra non lo hanno fatto.
1rq3fea324wre

108

Riceverai questo messaggio se dimentichi di usare sudoquando esegui 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 apt link (penso che ora passi attraverso SC)
  • Utilità della riga di comando apt-get o aptitude.
  • Il gestore pacchetti Synaptic

IMPORTANTE: prova quanto segue solo come ultima risorsa poiché può causare l'arresto anomalo del sistema. Prima prova a uccidere qualsiasi istanza in esecuzione apto aptitudecome descritto nella risposta di Faheem .

È possibile forzare il blocco rimuovendo il file, ma non è consigliabile senza prima chiudere il programma che trattiene il blocco in modo sicuro , poiché si potrebbe causare corruzione o interrompere l'installazione (non valido). 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 utilizzato per il blocco della cache apt:

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

5
Stavo aggiornando il mio software quando ho ricevuto il messaggio di errore.
goccia di pioggia

20
Questo si è schiantato per me-
umpirsky il

5
sudo fuser -cuk /var/cache/apt/archives/lockriavviato direttamente il mio computer. apt-getè ora sbloccato.
Maxime R.

15
Ciò ha provocato l'arresto anomalo del mio intero server.
에이 바

5
Uccidere apt o dpkg a metà strada non è una grande idea.
poolie,

99

Il modo più probabile per farlo è:

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

e la riga di comando si aptsovrappone al update-managerpolling automatico.

Quindi se riprovi tra qualche minuto dovrebbe risolverlo.


21
Ottimo suggerimento in contrasto con la mezza dozzina di risposte che suggeriscono di rimuovere semplicemente il file ;-) Ho riscontrato casualmente il problema e molto probabilmente è così!
Alex,

2
Abbastanza sicuro, ho dovuto aspettare un po 'prima di sudo apt-get installpoter funzionare.
sargas,

Bene, questo non funziona sempre, sì, ho usato il riavvio molte volte. Se non è adatto, prova questo askubuntu.com/a/315791/378845 prima di rimuovere i blocchi
Menuka Ishan,

@menuka, perché non lasciarlo finire.
poolie,

@poolie Perché ci sono altri vincoli che impediscono il completamento del processo
Menuka Ishan,

52

Solo un programma può contenere il blocco. Assicurati di non eseguire aptitude, synaptic o adept. Chiudi il programma ed eseguilo di nuovo, dovrebbe funzionare. Potresti avere Synaptic aperto, o avere un'altra finestra terminale aperta in esecuzione apt-get, o avere il gestore aggiornamenti in esecuzione. Controlla e vedi se qualcuno di questi è in esecuzione, se stanno correndo vicino e riprovare.

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.


9
L'eliminazione del file di blocco è, cosa che considererei, una cosa pericolosa da fare. Se un altro processo si blocca per un motivo valido - e si rimuove quel file di blocco e si forza un'installazione con quello che si stava facendo in precedenza - si potrebbe seriamente, in modo negativo, influire sul sistema.
Marco Ceppi

5
Ecco perché l'ho dato in Nota. Se tutto quanto sopra fallisce, l'unico modo è rimuovere il blocco. Non causerà alcun problema fino a quando i processi dpkg e apt-get / aptitude non sono in esecuzione
karthick87

pgrep -f 'apt|adept|dpkg'è molto più breve.
dhchdhd,

Grazie! questo funziona. pgrep -f 'apt | adept | dpkg' e poi sudo skill (numero), uccidi tutti i numeri e quindi installa funziona!
creatore

@Barry che corrisponderebbe a tutto il percorso + processo. Penso che pgrep -a 'apt|adept|dpkg'sia un equivalente più breve.
Pablo A

46

Finora il modo migliore per farlo funzionare senza interrompere un'eventuale installazione in background (come potrebbe accadere rimuovendo il file di blocco), è arrestare 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, suggerisco di riabilitarlo, poiché il bug di blocco 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 dopo averlo verificato


Dopo aver aggiornato il sistema e aver riavviato il servizio apt-daily.timer non sto affrontando questo problema finora.
Jairelee,

Questo è probabilmente il metodo più pulito rispetto a tutte quelle risposte più votate sopra. Nel mio caso ha funzionato perfettamente, grazie!
CygnusX1

Funzionò perfettamente anche alle 17.10
Elder Geek il

Ha lavorato il 17.10 +1
Ing

2
Funziona bene nel 18.04. :)
Naveen Kumar V

33

Prima di tutto dovremmo controllare quale processo ha creato il file di blocco 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, pgrepecc .; il comando è apt-getquindi corro:

pgrep apt-get -a

L' -aopzione elenca il comando completo per me, nel mio caso è:

 pgrep -a apt-get
 12127 apt-get update

possiamo vedere che è in esecuzione un updatesottocomando, potrei eseguire anche qualcosa del genere:

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 per liberare la risorsa e se dopo 2 o 3 minuti il ​​problema persiste o il comando era qualcosa di cui non mi importava o che non era dannoso per il sistema (come questo apt-get update) invio SIGTERMa il processo:

sudo kill -15 12127

Dovrebbe funzionare, se non lo avessi inviato SIGINTquesta volta (è come premere CTRL+ C):

sudo kill -2 12127

Se non ha funzionato troppo, dovremmo inviare un SIGHUP( kill -1), e infine se non funziona nulla, 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

Una piccola cosa è che /var/lib/dpkg/lockpiuttosto che /var/lib/apt/lists/lockil file nella domanda.
Chai T. Rex,

1
Grazie agli dei di root che qualcuno menziona finalmente pgrepe pkill.
dhchdhd,

1
Questa dovrebbe essere la risposta accettata.
Marwan Nabil,

se un'installazione o un aggiornamento ha causato anche questo dpkg --configure -apotrebbe essere necessario
LUXS

Questo funziona per me
Sundeep il

21

Questo errore può essere causato da Update Manager che tenta di aggiornare automaticamente l'elenco dei pacchetti in background, in genere subito dopo il login, bloccando così la directory.

In questo caso, attendi qualche secondo (o più, se il tuo ultimo aggiornamento è stato tanto tempo fa) per completare o avviare Update Manager per controllare lo stato.


L'ho avuto subito dopo aver installato Ubuntu 16.04. Si è scoperto che nel Ubuntu Software Center c'era un processo in background che mi aspettava di installare manualmente alcuni aggiornamenti.
jvriesem,

Idem dopo una nuova installazione del 16.04. Nel mio caso è troppo lungo di "pochi secondi" (ho avuto il tempo di leggere l'intera pagina di domande e risposte!) Ma dopo aver aggiornato psalcune volte ho visto che dpkgstava aggiornando un sacco di cose e ho aspettato pazientemente che tutto finisse . Ho quindi eseguito Software Updater fino a quando tutto era aggiornato prima di provare a installare qualcosa di nuovo.
Charlie Joynt,

16

Questo accadrà se hai 'Update Manager' in esecuzione in parallelo per qualsiasi controllo di aggiornamento o installazione mentre il processo di installazione posiziona Lock. Se stai riscontrando lo stesso errore senza "Update Manager" in esecuzione, devi rimuoverlo /var/lib/dgkg/lock, il che sicuramente non puoi farlo manualmente

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

funziona bene. Tratto da: https://askubuntu.com/a/15469/68707


1
Questo è stato il problema nel mio caso!
Londra,

1
Soluzione migliore dal momento che il comando del fusore utilizzato per rintracciare altri processi (se ancora in vita)
Lars Nordin

16

Non essere così veloce da rimuovere qualcosa, potrebbe danneggiare completamente il tuo sistema; piuttosto attendere fino a quando il programma attualmente in fase di installazione o disinstallazione termina la sua attività e successivamente si otterrà l'accesso. Se ritieni che al momento non ci sia nulla da installare o disinstallare, riavvia semplicemente il sistema con il comando sudo reboot.


1
Sembra un commento piuttosto che una risposta. Potresti spostare questo come commento alla risposta a cui stava rispondendo?
jvriesem,

4
@jvriesem Penso che questa sia una risposta molto importante, perché il punto che sta facendo è quello che manca a molte altre risposte!
Volker Siegel,

@jvriesem Questa è di solito la risposta corretta. Incontro questo problema abbastanza spesso con i miei contenitori Linux quando non li uso da molto tempo. Aspetta. Sì, potrebbe volerci un po '. Ma lascia che faccia il suo lavoro prima di entrare e distruggere le cose.
earth2jason

Questa dovrebbe essere la prima cosa da provare. Questa risposta il più delle volte risolve il problema. L'ho avuto forse 4-5 volte, e un riavvio lo ha sempre risolto.
Gen

10

Se hai aggiornamenti di sicurezza impostati per l'installazione automatica, ciò accadrà di frequente. Aspetto letteralmente 30 secondi e risolve il problema. Basta lanciarlo nel caso in cui qualcun altro incontri questo problema.


1
A seconda di quanto tempo è stata avviata la distribuzione, potrebbe durare fino a mezz'ora. Ma è probabilmente l'ideale per lasciare che la tua distribuzione finisca il suo lavoro prima di interrompere le cose.
earth2jason

6

Nel mio caso, ho dovuto attendere diversi minuti per rilasciare il blocco (sembra aptusato per tenerlo premuto). Tutto questo è successo subito dopo l'avvio del sistema.


4

Basta sudo rm -f /var/lib/apt/lists/lockriprovare.

apt-fast PUO 'essere responsabile di non sbloccare correttamente; questo succede a volte quando si interrompe apt-geto dpkgtroppo.


4

Ho avuto questo problema numerose volte. Per me, è stato quasi sempre causato da apt-get o da qualche interfaccia grafica che lo chiamava impiccarsi per qualche motivo. Ho dovuto ucciderlo che ha lasciato in posizione diverse serrature.

Le altre risposte sollevano punti molto positivi su come assicurarsi che nessun aggiornamento sia attualmente in esecuzione prima di fare qualcosa di drastico come rimuovere i file di blocco. Tuttavia, una volta che sei sicuro che non è così, di solito funziona quanto segue per me. Ho capito leggendo molte risposte a domande come questa.

Mentre la maggior parte o tutto questo è presentato nelle altre risposte, questo distilla la correzione in pochi comandi.

sudo fuser -vki /var/lib/dpkg/lock
sudo fuser -vki /var/cache/apt/archives/lock
sudo fuser -vki /var/cache/debconf/config.dat
sudo dpkg --configure -a

Utilizzare per sbloccare il sistema di pacchetti dopo un aggiornamento di qualche tipo bloccato o terminato senza finire in qualche altro modo. Questi comandi devono essere eseguiti nell'ordine presentato.


3

Non vedo questa risposta da nessuna parte sopra ma su Ubuntu 16.04 ho riscontrato anche questo problema. La causa è stata l'ora sul mio computer è stata impostata nel futuro . (Questo perché sono su un sistema dual boot Windows + Ubuntu e immagino di aver incasinato l'ora locale rispetto all'ora UTC.)

Una cosa strana era che la data e l'ora del file bloccato erano la data e l'ora esatte in cui ho eseguito il programma.

Ho quindi usato "fuser" come descritto nei post precedenti e apt funzionava, ma stavo ricevendo lamentele sulla necessità di eseguire dpkg -a -reconfigure. Quando l'ho fatto, ho ricevuto errori come:

newline in field name #padding

in file come '/ var / lib / dpkg / updates / 0003'.

Tutto ciò è stato molto strano perché non l'ho mai visto prima. Quindi, ho pensato che fossero sintomi e ho cambiato i miei dati e il mio tempo manualmente. Sapevo che c'era un problema con la data / ora quando ho effettuato l'accesso, ma lo ignoravo. (In precedenza, lo stava impostando automaticamente via Internet e NTP).

Quindi, tutti i problemi di cui sopra sono stati risolti ... Speriamo che questo aiuti qualcun altro! Il sintomo più notevole è forse la data / ora del file di blocco che è la data / ora esatta in cui si sta tentando di eseguire il comando.


3

Nel mio caso, X si è schiantato mentre apt-getstava ancora rimuovendo i vecchi kernel. Ho usato il monitor di sistema per confermare che era ancora in esecuzione e non bloccato. Tutto andava bene al termine del processo.


3

Controlla il Launcher per vedere se Software Updaterè in esecuzione. In tal caso, massimizzalo e dai un'occhiata a cosa sta facendo. Se sta ancora verificando, quindi attendere il completamento. Al termine, è possibile che il software sia aggiornato, quindi chiudere l'app. Se dice che ci sono aggiornamenti disponibili, esegui l'aggiornamento o fai clic su "ricordamelo più tardi". Dopo aver chiuso questa app, puoi tornare a utilizzare apt-geto apt.

Se Software Updaternon è in esecuzione, basta usare il Dash per invocarlo e attendere il completamento e quindi decidere se si desidera aggiornare o fare clic su "ricordamelo più tardi". Dopo aver chiuso questa app, puoi tornare a utilizzare apt-geto apt.


2

Nel mio caso stavo ricevendo lo stesso messaggio non rendendomi conto di essere passato all'utente root e di provare sudo apt-get. Una volta realizzato questo, ho appena eseguito apt-get, e ha funzionato. Stupido, ma potrebbe ancora spiegare l'errore per alcuni.


2
Questa non è la causa del problema, dal momento che è possibile eseguire sudocome root (e anche se non fosse possibile, non produrrebbe questo messaggio di errore). Più probabilmente ciò che accadde fu che l'altro processo terminò mentre stavi scrivendo il comando successivo.
wjandrea,

A volte produce lo stesso messaggio di errore.
Karel,

2
sudo killall -9 apt && sudo killall -9 dpkg

Utilizzare a proprio rischio


1

nel mio caso, dopo:

  1. Apri Firefox.
  2. Terminale aperto

Ho scritto


sudo apt update
sudp apt upgrade
poi ho questi problemi

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?
L'ho risolto, eseguendo il comando che mi veniva mostrato dopo l'esecuzione sudo apt update

apt list --upgradable

Questo comando ti mostrerà un elenco di programmi nel mio caso solo Firefox, ho chiuso Firefox, quindi ho potuto eseguire nuovamente il comando senza problemi.

sudo apt upgrade

0

Per le persone interessate a prevenire in modo proattivo questo bug nei loro script, ho scoperto che il flag -q su apt upgrade -yqstava causando questo problema per me. Durante il processo di aggiornamento immagino che occasionalmente mi darebbero avvisi (qualcosa sulla falsariga di aggiornare il desktop, vorrei continuare), e se questi avvisi fossero soppressi, allora suppongo che causi apt per non sbloccare i file che stava proteggendo e si è bloccato.

Certo, ho avuto problemi a riprodurre questo errore il 100% delle volte, ma l'eliminazione dell'opzione -q ha risolto completamente il problema per me .


0

Come la maggior parte degli altri, ho aspettato che il blocco venisse rimosso. Dopo 30 minuti ho rinunciato e avviato a una distribuzione diversa. Da lì ho usato Internet per alcune ricerche che mi hanno portato qui.

Si scopre che unattended-upgrades.servicesta funzionando. Ho scoperto che il riavvio nel sistema rotto e l'esecuzione:

sudo systemctl disable apt-daily.service
sudo systemctl disable unattended-upgrades.service
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer
sudo shutdown -r # Note it will take a couple minutes to reboot

mi ha permesso di far funzionare nuovamente il sistema rotto per:

sudo apt update
sudo apt upgrade
sudo apt install -f

Tuttavia, non ha risolto i pacchetti conservati e la situazione impossibile segnalati aptin primo luogo. Sembrerebbe che questo abbia causato il aptblocco all'avvio in primo luogo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.