"could not get lock /var/lib/dpkg/lock
“ chyba je docela běžná v Debian/Ubuntu běžícím na virtuálním počítači. Stávající zástupná řešení na internetu (tj. zabít proces apt-get nebo odstranit soubor zámku) nejsou ideální, protože mohou poškodit váš systém a v budoucnu budete čelit stejné chybě znovu.
Oprava chyby „Nelze získat zámek /var/lib/dpkg/lock“ Jednou provždy
Řeknu vám skutečnou příčinu této chyby a ukážu vám, jak ji jednou provždy opravit. Chybová zpráva je následující:
E:Nelze získat zámek /var/lib/dpkg/lock - otevřít (11:Zdroj dočasně nedostupný)E:Nelze zamknout administrační adresář (/var/lib/dpkg), používá jej jiný proces?
Chybová zpráva vám již naznačuje příčinu problému:jiný proces používá
/var/lib/dpkg/
. Je to proto, že Ubuntu ve výchozím nastavení umožňuje bezobslužné upgrady pro aktualizaci zabezpečení.Když váš operační systém Ubuntu dokončí bootování, automaticky se spustí
apt-get update
příkaz. Pokud jsou k dispozici aktualizace zabezpečení, nainstaluje je na pozadí. Pokud tedy spustítesudo apt upgrade
příkaz současně, zobrazí se výše uvedená chyba. Protože Ubuntu ve Virtualboxu nebo pracovní stanici VMware nepoužíváte tak často jako Ubuntu na holém kovu, váš virtuální stroj Ubuntu se aktualizuje jen zřídka, takže se s touto chybou setkáte častěji.Ať už používáte desktop Ubuntu na holém kovu nebo ve virtuálním počítači, můžete zakázat bezobslužné upgrady, abyste tento problém vyřešili jednou provždy.
Poznámka:Tato chyba se na serveru Ubuntu vyskytuje jen zřídka a doporučuje se povolit bezobslužné upgrady na serverech, aby se aktualizace zabezpečení instalovaly automaticky.
Zde je návod. Otevřete
Software & Updates
z nabídky aplikace.
Poté klikněte na
updates
tab. Ve výchozím nastavení se aktualizace zabezpečení stahují a instalují automaticky. Můžete jej změnit nadisplay immediately
, takže se nespustísudo apt-get upgrade
příkaz na pozadí.
Poté zadejte své uživatelské heslo, aby se tato změna projevila.
Poté restartujte počítač.
Zakázat bezobslužné upgrady z příkazového řádku
Stejných výsledků můžete dosáhnout také z příkazového řádku. Ve svém terminálu otevřete
/etc/apt/apt.conf.d/20auto-upgrades
pomocí textového editoru příkazového řádku, jako je nano.sudo nano /etc/apt/apt.conf.d/20auto-upgradesPůvodní obsah je následující:
APT::Periodic::Update-Package-Lists "1";APT::Periodicky::Download-Upgradeable-Packages "1";APT::Periodic::AutocleanInterval "0";APT::Periodické::Bezobslužný upgrade „1“;Chcete-li zakázat automatické aktualizace zabezpečení, změňte je na
APT::Periodic::Update-Package-Lists "1";APT::Periodicky::Download-Upgradeable-Packages "0";APT::Periodic::AutocleanInterval "0";APT::Periodicky::Bezobslužný upgrade "0";Chcete-li soubor uložit v textovém editoru Nano, stiskněte
Ctrl+O
a poté stiskněte Enter pro potvrzení názvu souboru. StiskněteCtrl+X
k východu. Poté restartujte počítač.Aktualizovat
Čtenář mi řekl, že po provedení výše uvedených pokynů může být chybová zpráva stále vidět, pokud spustí
sudo apt update
příkaz ihned po dokončení spuštění Ubuntu. Je to proto, že pozadí „apt update
“ ještě není dokončeno.Pokud jste člověk, který často aktualizuje balíčky ručně, doporučil bych nastavit „automaticky kontrolovat aktualizace“ na
weekly
místodaily
. Chcete-li chybovou zprávu skutečně jednou provždy opravit, nastavte hodnotu naNever
.
Kdy Ubuntu provádí bezobslužné upgrady?
Ubuntu provádí bezobslužné aktualizace po spuštění systému. Systemd může také provádět bezobslužné upgrady.
apt-daily.service
se používá k denní aktualizaci seznamu balíčků aapt-daily-upgrade.service
se používá ke každodennímu stahování a instalaci aktualizací zabezpečení. Jejich stav můžete zkontrolovat pomocí:stav systemctl apt-daily.servicesystemctl stav apt-daily-upgrade.service
apt-daily.service
je řízen pomocíapt-daily.timer
. Časovač je jako úloha cron, která v určených časech spouští službu systemd se stejným názvem.apt-daily.timer
Konfigurační soubor je/lib/systemd/system/apt-daily.timer
. Jeho obsah můžete zkontrolovat pomocí:cat /lib/systemd/system/apt-daily.timerVýstup:
[Unit]Description=Denní apt stahování aktivit[Timer]OnCalendar=*-*-* 6,18:00RandomizedDelaySec=12hPersistent=true[Install]WantedBy=timers.targetZelená čára označuje
apt-daily.service
probíhá každý den v 6:00 a 18:00.RandomizedDelaySec=12h
znamená, že akce bude odložena o 0 ~ 12 hodin, pokud má jiný časovač stejný čas začátku.
apt-daily-upgrade.service
je řízen pomocíapt-daily-upgrade.timer
, jehož konfigurační soubor je/lib/systemd/system/apt-daily-upgrade.timer
.cat /lib/systemd/system/apt-daily-upgrade.timerVýstup:
[Unit]Description=Denní aktualizace apt a čisté aktivityAfter=apt-daily.timer[Timer]OnCalendar=*-*-* 6:00RandomizedDelaySec=60mPersistent=true[Install]WantedBy=timers.targetJak můžete vidět,
apt-daily-upgrade.service
probíhá každý den v 6:00.RandomizedDelaySec=60m
znamená, že akce bude odložena o 0 ~ 60 minut, pokud má jiný časovač stejný čas začátku.Dva
.service
soubory a dva.timer
soubory instalujeapt
balíček, který je dodáván také s/usr/lib/apt/apt.systemd.daily
shell skript, který spouštíapt-daily.service
aapt-daily-upgrade.service
.
/usr/lib/apt/apt.systemd.daily
shell skript čte konfigurace z/etc/apt/apt.conf.d/20auto-upgrades
soubor. Oprava výše uvedené chyby tedy nevyžaduje deaktivaci dvou časovačů.A je to! Doufám, že vám tento článek pomohl opravit „
could not get lock /var/lib/dpkg/lock
“chyba na Ubuntu. Jako vždy, pokud pro vás byl tento příspěvek užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, kde získáte další tipy a triky. Opatruj se 🙂
Jak nainstalovat Subsonic Media Server na Ubuntu 18.04, 19.04 a povolit HTTPS Část 3:PostfixAdmin – Vytváření virtuálních poštovních schránek na poštovním serveru Ubuntu 20.04Ubuntu