GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Correzione dell'errore "Impossibile ottenere il blocco /var/lib/dpkg/lock" una volta per tutte (Ubuntu)

"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 🙂


Ubuntu
  1. Correggi l'errore "comando add-apt-repository non trovato" su Ubuntu e Debian

  2. Risolto il problema con "Impossibile acquisire il blocco del frontend dpkg. Sei root?" Errore su Ubuntu e altre distribuzioni Linux

  3. Differenza tra /var/log/messages, /var/log/syslog e /var/log/kern.log?

  4. Alternative di aggiornamento:errore:/var/lib/dpkg/alternatives/vim danneggiato:stato non valido?

  5. Errore irreversibile:impossibile aprire e bloccare le tabelle dei privilegi:la tabella "mysql.host" non esiste

Come risolvere l'errore "E:Impossibile ottenere il blocco /var/lib/dpkg/lock" su Ubuntu

Risolto il problema con "Il sottoprocesso /usr/bin/dpkg ha restituito un codice di errore (1)" in Ubuntu

Come risolvere l'errore "E:impossibile ottenere il blocco /var/lib/dpkg/lock" in Ubuntu

Come risolvere l'errore "E:impossibile ottenere il blocco /var/lib/dpkg/lock" in Ubuntu Linux

Correzione dell'errore "Impossibile analizzare il file del pacchetto /var/lib/apt/lists" in Ubuntu e altre distribuzioni Linux

Ubuntu 17.10 Blocco schermo non funzionante e grigio?