← All posts

[ITA] Ripristinare aptitude fixando il lock di /var/lib/dpkg/

Vi è mai capitato che quando digitate il vostro bel comando “apt-get …” la shell vi risponda “picche” dandovi questo messaggio:

E: Impossibile ottenere il lock /var/lib/dpkg/lock - open (11 Risorsa temporaneamente non disponibile)  
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it? 

Se si, ora vi do il metodo per risolvere questo problema. D’altronde è proprio questo che state cercando

digitate:

ps aux|grep "/var/lib/dpkg/"

e dovreste ottenere qualcosa simile all’output mostrato qui sotto:

root     11392  0.0  0.4  11864  8988 pts/1    S+   10:05   0:00 /usr/bin/perl -w /usr/share/debconf/frontend /var/lib/dpkg/info/localepurge.postinst configure  
root     11398  0.0  0.0   1772   564 pts/1    S+   10:05   0:00 /bin/sh -e /var/lib/dpkg/info/localepurge.config configure  
1000     11832  0.0  0.0   3012   784 pts/2    S+   10:10   0:00 grep /var/lib/dpkg/ 

come potete vedere ci sono 3 processi che corrispondono, perchè utilizzano la directory citata da aptitude. Escludiamo l’ultimo perchè è la grep che abbiamo appena eseguito. Prendiamo l’id del processo (11392 e 11398) e li killiamo (aggiungo il sudo perchè il lock è stato fatto dall’utente root e quindi anche i processi, come si può vedere sopra, “appartengono” a root):

sudo kill -9 11392  
sudo kill -9 11398

quindi ora ricontrolliamo che non ci siano più i processi in background:

ps aux|grep "/var/lib/dpkg/"

e difatti l’unico in esecuzione è solo la grep:

1000     11843  0.0  0.0   3008   772 pts/2    S+   10:12   0:00 grep /var/lib/dpkg/

fatto ciò rilanciamo il nostro comando “apt-get …”:

sudo apt-get install ...

e tutto filerà liscio

Lettura della lista dei pacchetti in corso... Fatto  
Generazione dell'albero delle dipendenze in corso  
Lettura delle informazioni di stato... Fatto  
[...]