天天看点

解决 Ubuntu “Could not get lock /var/lib/dpkg/lock” 问题

作者:鸠摩智首席音效师
解决 Ubuntu “Could not get lock /var/lib/dpkg/lock” 问题

最近,我遇到了 “Could not get lock /var/lib/dpkg/lock”的错误,我既不能安装任何软件包,也不能更新系统。此错误也与“Could not get lock /var/lib/apt/lists/lock”错误密切相关。以下是 Ubuntu 20.04 上的一些样本输出。

Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 3620 (apt)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to lock directory /var/lib/apt/lists/           
解决 Ubuntu “Could not get lock /var/lib/dpkg/lock” 问题

这可能会非常令人沮丧,经常会让你陷入困境,无法更新、升级或安装任何软件包。

是什么导致了这个错误

正如错误所提示的那样,另一个进程正在使用 /var/lib/dpkg/lock 或 /var/lib/dpkg/lock 文件。当您有 2 个或多个终端运行系统更新或升级时,就会发生这种情况。当您过早地取消或以其他方式更新 / 升级时,也可能发生这种情况。

如果遇到这种错误,完全没有必要惊慌,让我们探讨一些解决方案。

(1) 关闭所有正在使用 APT 管理器的进程

列出使用 apt 包管理器的进程

$ ps aux | grep - i apt           
解决 Ubuntu “Could not get lock /var/lib/dpkg/lock” 问题

结束正在使用 apt 包管理器的进程

$ sudo kill -9 3619
$ sudo kill -9 3620           

再次使用 ps 命令,验证进程是否结束,如果它们都已清除,就可以继续更新系统。

(2) 删除锁定文件

在某些情况下,根本原因可能是锁文件。锁文件阻止两个或多个进程访问相同的数据。当您运行 apt 或 apt-get 命令时,通常会创建一个锁文件。但是,如果最新的 apt 命令没有成功执行(即突然终止),锁文件将继续存在并阻止任何后续的 apt 或 apt-get 实例。

解决 “Could not get lock /var/lib/apt/lists/lock”错误

$ sudo rm /var/lib/apt/lists/lock           

解决 “Could not get lock /var/lib/dpkg/lock”错误

$ sudo rm /var/lib/dpkg/lock           

其他时候,您可能会遇到 “/var/lib/dpkg/lock-frontend error”的错误。这意味着当前正在运行使用 APT / DPKG 的图形应用程序,这可能是使用 Gdebi 或 Synaptic 包管理器造成的。

即时的补救措施是退出或关闭程序,并再次尝试。如果没有效果,可是尝试删除 /var/lib/dpkg/lock-frontend 文件。

$ sudo rm /var/lib/dpkg/lock-frontend           

删除 lock-frontend 文件可能会再次导致“Could not get lock /var/lib/dpkg/lock”错误,因此,您将不得不继续删除相关锁定文件。

$ sudo rm /var/lib/dpkg/lock           

如果您碰巧会出现有关 apt-cache lock 的错误,例如 /var/cache/apt/archives/lock,请删除相关锁定文件。

$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock           

我的开源项目

解决 Ubuntu “Could not get lock /var/lib/dpkg/lock” 问题

酷瓜云课堂 - 开源在线教育解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 - github 仓库)