如果你的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?
错误消息已经为你提供了问题原因的提示:另一个进程正在使用/var/lib/dpkg/,这是因为Ubuntu默认启用无人参与的安全更新升级。 当你的Ubuntu操作系统完成启动时,它会自动运行apt-get update命令。如果有可用的安全更新,它将在后台安装它们。因此,如果同时运行sudo apt upgrade命令,则会显示上述错误。因为你不会像在裸机上使用Ubuntu那样经常在Virtualbox或VMware工作站中使用Ubuntu,所以你的Ubuntu虚拟机很少得到更新,因此你可以在虚拟机中更频繁地看到此错误。 无论你是在裸机还是在虚拟机中使用Ubuntu桌面,你都可以禁用无人值守升级,以便一劳永逸地解决此问题。 注意:在Ubuntu服务器上很少发生此错误,建议你在服务器上启用无人参与的升级以自动安装安全更新。 现在从应用程序菜单中打开软件和更新:
然后单击更新选项卡,默认情况下,会自动下载并安装安全更新,可以将其更改为立即显示(display immediately),因此它不会在后台运行sudo apt-get upgrade命令:
然后输入你的用户密码以让更改生效:
之后,重新启动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何时执行无人值守升级 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文件中读取配置,因此修复上述错误不需要你禁用两个计时器。
相关主题 |