云网牛站
所在位置:首页 > Linux教程 > Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

2019-03-19 12:05:35作者:戴进稿源:云网牛站

如果你的Ubuntu 18.04或Ubuntu操作系统出现了could not get lock /var/lib/dpkg/lock(无法获取锁定/var/lib/dpkg/lock)的错误提示,网上现有的解决方法(即杀死apt-get进程或删除锁定文件)并不理想,因为它们可能会损坏您的系统,并且你将来会再次面临同样的错误。请按下面的解决方法处理,亲测能修复错误问题。

 

修复“could not get lock /var/lib/dpkg/lock”Error的方法

我会告诉你这个错误的真正原因,并告诉你如何一劳永逸地解决它,错误消息如下:

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?

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

错误消息已经为你提供了问题原因的提示:另一个进程正在使用/var/lib/dpkg/,这是因为Ubuntu默认启用无人参与的安全更新升级。

当你的Ubuntu操作系统完成启动时,它会自动运行apt-get update命令。如果有可用的安全更新,它将在后台安装它们。因此,如果同时运行sudo apt upgrade命令,则会显示上述错误。因为你不会像在裸机上使用Ubuntu那样经常在Virtualbox或VMware工作站中使用Ubuntu,所以你的Ubuntu虚拟机很少得到更新,因此你可以在虚拟机中更频繁地看到此错误。

无论你是在裸机还是在虚拟机中使用Ubuntu桌面,你都可以禁用无人值守升级,以便一劳永逸地解决此问题。

注意:在Ubuntu服务器上很少发生此错误,建议你在服务器上启用无人参与的升级以自动安装安全更新。

现在从应用程序菜单中打开软件和更新:

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

然后单击更新选项卡,默认情况下,会自动下载并安装安全更新,可以将其更改为立即显示(display immediately),因此它不会在后台运行sudo apt-get upgrade命令:

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

然后输入你的用户密码以让更改生效:

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

之后,重新启动Ubuntu计算机即可。如果问题已解决,到这里就可以了。下面的介绍为你增加见识,进一步的杜绝“could not get lock /var/lib/dpkg/lock”问题再次出现。

 

从命令行禁用无人值守升级

技术参考:在Ubuntu 18.04服务器上设置自动安全更新(无人值守升级)

你还可以从命令行获得相同的结果,在终端中,使用命令行文本编辑器(如nano)打开/etc/apt/apt.conf.d/20auto-upgrades文件:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

原始内容如下:

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Download-Upgradeable-Packages "1";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "1";

要禁用自动安全更新,请将其更改为:

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Download-Upgradeable-Packages "0";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "0";

要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认文件名,按Ctrl+X退出,然后重新启动计算机。

 

更新说明

如果他在Ubuntu完成启动后立即运行sudo apt update命令,仍然可以看到错误信息,这是因为“apt update”尚未完成。

如果你经常手动更新软件包,我建议你将“自动检查更新”设置为每周而不是每天,要真正一劳永逸地修复错误消息,请将值设置为Never(从不)。

Ubuntu 18.04中出现could not get lock /var/lib/dpkg/lock的解决

 

Ubuntu何时执行无人值守升级

Ubuntu在系统启动后执行无人值守升级,Systemd也可以执行无人值守的升级,apt-daily.service用于每日更新包列表,apt-daily-upgrade.service用于每天下载和安装安全更新,可以通过以下方式查看其状态:

systemctl status apt-daily.service

systemctl status apt-daily-upgrade.service

apt-daily.service由apt-daily.timer控制,计时器就像一个cron作业,在指定的时间执行具有相同名称的systemd服务,apt-daily.timer的配置文件是/lib/systemd/system/apt-daily.timer,可以使用以下方式查看其内容:

运行:cat /lib/systemd/system/apt-daily.timer

输出:

[Unit]

Description=Daily apt download activities

[Timer]

OnCalendar=*-*-* 6,18:00

RandomizedDelaySec=12h

Persistent=true

[Install]

WantedBy=timers.target

OnCalendar=*-*-* 6,18:00表示apt-daily.service每天在6:00和18:00运行, RandomizedDelaySec=12h表示如果另一个计时器具有相同的开始时间,则动作将推迟0~12小时。

apt-daily-upgrade.service由apt-daily-upgrade.timer控制,其配置文件为/lib/systemd/system/apt-daily-upgrade.timer:

cat /lib/systemd/system/apt-daily-upgrade.timer

输出:

[Unit]

Description=Daily apt upgrade and clean activities

After=apt-daily.timer

[Timer]

OnCalendar=*-*-* 6:00

RandomizedDelaySec=60m

Persistent=true

[Install]

WantedBy=timers.target

如上,apt-daily-upgrade.service每天早上6点运行,RandomizedDelaySec=60m表示如果另一个计时器具有相同的开始时间,则动作将推迟0~60分钟。

这两个.service文件和两个.timer文件由apt软件包安装,它也随/usr/lib/apt/apt.systemd.daily脚本,由apt-daily.service和apt-daily-upgrade.service执行。

/usr/lib/apt/apt.systemd.daily的shell脚本从/etc/apt/apt.conf.d/20auto-upgrades文件中读取配置,因此修复上述错误不需要你禁用两个计时器。

 

相关主题

在Ubuntu 18.04系统中使用kernel-ppa deb包安装Linux 5.0内核

精选文章
热门文章