"could not get lock /var/lib/dpkg/lock
L'errore è abbastanza comune in Debian/Ubuntu in esecuzione su una macchina virtuale. Le soluzioni alternative esistenti su Internet (ad es. uccidere il processo apt-get o rimuovere il file di blocco) non sono l'ideale, perché possono danneggiare il tuo sistema e in futuro dovrai affrontare lo stesso errore di nuovo.
Corretto l'errore "Impossibile ottenere il blocco /var/lib/dpkg/lock" una volta per tutte
Ti dirò la vera causa di questo errore e ti mostrerò come risolverlo una volta per tutte. Il messaggio di errore è il seguente:
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?
Il messaggio di errore ti dà già un suggerimento sulla causa del problema:un altro processo sta usando /var/lib/dpkg/
. Questo perché Ubuntu per impostazione predefinita abilita gli aggiornamenti automatici per l'aggiornamento della sicurezza.
Quando il tuo sistema operativo Ubuntu termina l'avvio, esegue automaticamente apt-get update
comando. Se sono disponibili aggiornamenti di sicurezza, li installerà in background. Quindi, se esegui sudo apt upgrade
comando allo stesso tempo, viene visualizzato l'errore precedente. Poiché non usi Ubuntu in Virtualbox o workstation VMware tutte le volte che usi Ubuntu su bare metal, la tua macchina virtuale Ubuntu viene aggiornata raramente, quindi vedi questo errore più spesso nella macchina virtuale.
Sia che utilizzi il desktop Ubuntu su bare metal o su una macchina virtuale, puoi disabilitare gli aggiornamenti automatici per risolvere questo problema una volta per tutte.
Nota:questo errore si verifica raramente sul server Ubuntu e si consiglia di abilitare gli aggiornamenti automatici sui server per installare automaticamente gli aggiornamenti di sicurezza.
Ecco come. Apri Software & Updates
dal menu dell'applicazione.
Quindi fai clic su updates
scheda. Per impostazione predefinita, gli aggiornamenti di sicurezza vengono scaricati e installati automaticamente. Puoi cambiarlo in display immediately
, quindi non eseguirà sudo apt-get upgrade
comando in background.
Quindi inserisci la tua password utente per rendere effettiva questa modifica.
Dopodiché, riavvia il computer.
Disabilita aggiornamenti automatici dalla riga di comando
Puoi anche ottenere gli stessi risultati dalla riga di comando. Nel tuo terminale, apri /etc/apt/apt.conf.d/20auto-upgrades
file con un editor di testo a riga di comando come nano.
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Il contenuto originale è il seguente:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "1";
Per disabilitare l'aggiornamento automatico della sicurezza, cambiali in
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "0"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "0";
Per salvare il file nell'editor di testo Nano, premi Ctrl+O
, quindi premere Invio per confermare il nome del file. Premi Ctrl+X
uscire. Quindi riavvia il computer.
Aggiorna
Un lettore mi ha detto che dopo aver seguito le istruzioni di cui sopra, il messaggio di errore può ancora essere visualizzato se esegue sudo apt update
comando subito dopo che Ubuntu ha terminato l'avvio. Questo perché lo sfondo "apt update
” non è ancora finito.
Se sei una persona che aggiorna spesso i pacchetti manualmente, ti consiglio di impostare "verifica automaticamente aggiornamenti" su weekly
invece di daily
. Per correggere davvero il messaggio di errore una volta per tutte, imposta il valore su Never
.
Quando Ubuntu esegue aggiornamenti automatici?
Ubuntu esegue aggiornamenti automatici dopo l'avvio del sistema. Inoltre Systemd può eseguire aggiornamenti automatici. Il apt-daily.service
viene utilizzato per aggiornare quotidianamente l'elenco dei pacchetti e apt-daily-upgrade.service
viene utilizzato per scaricare e installare quotidianamente gli aggiornamenti di sicurezza. Puoi controllare il loro stato con:
systemctl status apt-daily.service systemctl status apt-daily-upgrade.service
apt-daily.service
è controllato da apt-daily.timer
. Un timer è come un cron job, che esegue un servizio systemd con lo stesso nome a orari specificati. Il apt-daily.timer
Il file di configurazione di è /lib/systemd/system/apt-daily.timer
. Puoi verificarne il contenuto con:
cat /lib/systemd/system/apt-daily.timer
Uscita:
[Unit] Description=Daily apt download activities [Timer] OnCalendar=*-*-* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers.target
La linea verde indica che apt-daily.service
viene eseguito alle 6:00 e alle 18:00 tutti i giorni. RandomizedDelaySec=12h
significa che l'azione verrà posticipata di 0 ~ 12 ore se un altro timer ha la stessa ora di inizio.
apt-daily-upgrade.service
è controllato da apt-daily-upgrade.timer
, il cui file di configurazione è /lib/systemd/system/apt-daily-upgrade.timer
.
cat /lib/systemd/system/apt-daily-upgrade.timer
Uscita:
[Unit] Description=Daily apt upgrade and clean activities After=apt-daily.timer [Timer] OnCalendar=*-*-* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers.target
Come puoi vedere, apt-daily-upgrade.service
viene eseguito alle 6:00 tutti i giorni. RandomizedDelaySec=60m
significa che l'azione verrà posticipata di 0 ~ 60 minuti se un altro timer ha la stessa ora di inizio.
I due .service
file e due .timer
i file vengono installati da apt
pacchetto, che viene fornito anche con il /usr/lib/apt/apt.systemd.daily
script di shell eseguito da apt-daily.service
e apt-daily-upgrade.service
.
Il /usr/lib/apt/apt.systemd.daily
lo script della shell legge le configurazioni da /etc/apt/apt.conf.d/20auto-upgrades
file. Quindi, la correzione dell'errore sopra non richiede la disattivazione dei due timer.
Questo è tutto! Spero che questo articolo ti abbia aiutato a risolvere il problema "could not get lock /var/lib/dpkg/lock
” errore su Ubuntu. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi. Attento 🙂