Recentemente stavo cercando di installare un'applicazione usando il comando apt su Ubuntu quando ho riscontrato il seguente errore:
E:Impossibile ottenere il blocco /var/lib/dpkg/lock – aperto (11:Risorsa temporaneamente non disponibile)
E:Impossibile bloccare la directory di amministrazione (/var/lib/dpkg/), viene utilizzata da un altro processo?
In effetti, potresti vedere un errore simile:
E:Impossibile ottenere il blocco /var/lib/apt/lists/lock – aperto (11:Risorsa temporaneamente non disponibile)
E:Impossibile bloccare la directory /var/lib/apt/lists/
E:Impossibile ottenere il blocco /var/lib/dpkg/lock – aperto (11:Risorsa temporaneamente non disponibile)
E:Impossibile bloccare la directory di amministrazione (/var/lib/dpkg/), viene utilizzata da un altro processo?
In alcuni casi, potresti vederlo durante l'utilizzo del Software Center:

Questi errori sono molto simili a un altro errore comune di Ubuntu, Impossibile bloccare la directory /var/cache/apt/archives/, e la cosa interessante è che anche le correzioni sono simili.
Risolto errore "Impossibile bloccare la directory di amministrazione (/var/lib/dpkg/)"
Viene visualizzato questo errore perché qualche altro programma sta tentando di aggiornare Ubuntu. Quando un comando o un'applicazione aggiorna il sistema o installa un nuovo software, blocca il file dpkg (gestore di pacchetti Debian).
Questo blocco viene eseguito in modo che due processi non modifichino il contenuto contemporaneamente in quanto potrebbero portare a situazioni ingiustificate e un possibile sistema rotto.
Vediamo quali passaggi puoi intraprendere per risolvere questo problema di "impossibile bloccare la directory di amministrazione".
Metodo 0:
La prima cosa da fare è controllare se qualche altro programma potrebbe eseguire l'aggiornamento del sistema o installare un programma.
Se stai usando la riga di comando, controlla se un'applicazione come Software Center, Software Updater, Synaptic Package Manager, Gdebi sta eseguendo aggiornamenti/installazioni. In tal caso, attendi che il programma termini il processo in esecuzione.
Se non è presente alcuna applicazione in esecuzione, controlla tutte le finestre del terminale aperte e verifica se stai eseguendo un aggiornamento o installando un programma. Se sì, aspetta che finisca.
Se non si verifica nessuno dei precedenti, controlla quale altro processo sta eseguendo il comando apt (gestore di pacchetti per la gestione del software). Usa questo comando:
ps aux | grep -i apt
Per me, ha mostrato questo output:
[email protected]:~$ ps aux | grep -i apt
root 1464 0.0 0.0 4624 772 ? Ss 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root 1484 0.0 0.0 4624 1676 ? S 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt 2836 0.8 0.1 96912 9432 ? S 19:09 0:03 /usr/lib/apt/methods/http
abhishek 6172 0.0 0.0 21532 1152 pts/1 S+ 19:16 0:00 grep --color=auto -i apt

Se vedi che apt è utilizzato da un programma come apt.systemd.daily update , sei fortunato, mio caro lettore.
Questo è un demone che viene eseguito in background e controlla automaticamente gli aggiornamenti di sistema all'avvio del sistema.
In Ubuntu 18.04 e versioni successive, potrebbe anche provare a scaricare e installare da solo gli importanti aggiornamenti di sicurezza. Almeno questo è ciò che vedo nelle impostazioni predefinite nello strumento Software e aggiornamenti sul desktop di Ubuntu.

Se sei su un server Ubuntu, puoi controllare se hai aggiornamenti automatici abilitati controllando il contenuto del file /etc/apt/apt.conf.d/20auto-upgrades .
Quindi se vedi che apt.systemd.daily sta usando il processo apt, tutto quello che devi fare è aspettare qualche minuto. Al termine dell'aggiornamento automatico, dovresti essere in grado di installare il software come di consueto.
Come soluzione permanente, puoi disabilitare del tutto il controllo per l'aggiornamento automatico e gli aggiornamenti automatici, tuttavia non lo consiglierò per motivi di sicurezza.
Ora, quello era lo scenario semplice e poteva essere gestito facilmente. Ma potrebbe non essere sempre così. Se qualche altro programma sta usando apt, devi gestirlo in modo diverso.
Metodo 1:
Usa la riga di comando di Linux per trovare e terminare il processo in esecuzione. Per farlo, usa il comando seguente:
ps aux | grep -i apt
Questo ti mostrerà l'id del processo in esecuzione apt o apt-get. Nell'esempio seguente, l'ID processo è 7343. Puoi ignorare l'ultima riga contenente 'grep –color=auto'.

È possibile utilizzare l'id del processo per terminarlo inviando il segnale SIGTERM. Sostituisci
sudo kill <process_id>
Controlla se il processo è stato terminato eseguendo il comando 'ps aux | grep -i apt' comando. Se è ancora in esecuzione, forza l'uccisione con il segnale SIGKILL:
sudo kill -9 <process_id>
Un altro modo più semplice sarebbe usare il comando killall. Questo ucciderà tutte le istanze di un programma in esecuzione:
sudo killall apt apt-get
Metodo 2
Il metodo sopra ti risolverebbe il problema nella maggior parte dei casi. Ma il mio caso era un po' diverso. Stavo aggiornando il mio sistema e ho chiuso accidentalmente il terminale. Per questo motivo, non c'erano processi in esecuzione apt, ma mi ha comunque mostrato l'errore.
Consiglierei di provare i due metodi precedenti o semplicemente di riavviare prima il sistema. Se nulla di tutto ciò funziona, solo tu scegli questa opzione per rimuovere i file di blocco.
In questo caso, la causa principale è il file di blocco. Come accennato in precedenza, i file di blocco vengono utilizzati per impedire a due o più processi di utilizzare gli stessi dati. Quando vengono eseguiti i comandi apt o apt-get, creano file di blocco in alcuni punti. Se il precedente comando apt non è stato terminato correttamente, i file di blocco non vengono eliminati e quindi impediscono qualsiasi nuova istanza di comandi apt-get o apt.
Per risolvere il problema, tutto ciò che devi fare è rimuovere i file di blocco. Ma prima di farlo, sarebbe una buona idea interrompere qualsiasi processo che utilizza i file di blocco.
Utilizzare il comando lsof per ottenere l'ID del processo che contiene i file di blocco. Controlla l'errore e guarda di quali file di blocco si lamenta e ottieni l'ID dei processi che contengono questi file di blocco.
Esegui questi comandi uno per uno.
sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
È possibile che i comandi non restituiscano nulla o restituiscano solo un numero. Se restituiscono almeno un numero, usa i numeri e uccidi i processi in questo modo (sostituisci
sudo kill -9 <process_id>
Ora puoi rimuovere in sicurezza i file di blocco utilizzando i comandi seguenti:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Successivamente, riconfigura i pacchetti:
sudo dpkg --configure -a
Ora, se esegui il comando sudo apt update, tutto dovrebbe andare bene.
Risoluzione dei problemi 1:"Impossibile acquisire il blocco frontend dpkg"
Se vedi un errore come questo:
[email protected]:~$ sudo apt install grub-customizer
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Dovresti scoprire quale processo sta tenendo il lock-frontend usando il comando lsof come discusso nelle sezioni precedenti:
sudo lsof /var/lib/dpkg/lock-frontend
Questo è quello che ha mostrato per me:
[email protected]:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 2823 root 5uW REG 8,2 0 145221 /var/lib/dpkg/lock-frontend
Se vedi "non presidi ' Colonna COMANDO, significa che sono in esecuzione aggiornamenti di sicurezza non presidiati. Dovresti attendere che il processo finisca . Fondamentalmente, questo è ciò di cui ho discusso nel metodo 0, ma probabilmente l'hai saltato.
Se il COMANDO è qualcos'altro, puoi terminare il processo e quindi rimuovere il file di blocco. Puoi vedere l'ID del processo sotto la colonna PID. Utilizzare questo PID per terminare il processo. Successivamente, rimuovi il file di blocco ed esegui il comando di aggiornamento per vedere se è stato corretto.
sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update
Cos'è quel lsof:warning can't stat() fuse.gvfsd-fuse file system?
Nota:se vedi "lsof:warning can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Le informazioni di output potrebbero essere incomplete" righe dopo aver eseguito il comando lsof menzionato in precedenza, non farti prendere dal panico.
Non è un errore. È solo che lsof cerca di esaminare anche i file system montati e l'avviso riguarda quei sistemi montati.
I file sono bloccati dai processi sul tuo filesystem principale, quindi se mostra qualche avviso e nessun output, significa solo che non c'è nessun processo che usa quei file di blocco.
Risoluzione dei problemi 2:"dpkg:errore:dpkg frontend è bloccato da un altro processo"
Se viene visualizzato l'errore "dpkg frontend è bloccato da un altro processo" durante l'esecuzione dei passaggi del metodo 2, è necessario un passaggio aggiuntivo.
Innanzitutto, scopri l'ID del processo che contiene il file di blocco.
sudo lsof /var/lib/dpkg/lock-frontend
Il comando precedente ti fornirà i dettagli dei processi che utilizzano i file di blocco. Usa l'ID processo per terminare questo programma:
sudo kill -9 PID
Ora puoi rimuovere il blocco e riconfigurare dpkg:
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
Ha funzionato per te? Quale metodo te lo ha risolto?

Spero che questo piccolo suggerimento ti abbia aiutato a correggere l'errore "Impossibile ottenere il blocco /var/lib/dpkg/lock". Se sì, per favore fatemi sapere nei commenti quale metodo ha funzionato per voi.
Se hai ancora problemi, fammi sapere. Cercherò di aiutarti.
Eventuali altri suggerimenti sono ben accetti anche nei commenti.