最近,我遇到了 “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/
这可能会非常令人沮丧,经常会让你陷入困境,无法更新、升级或安装任何软件包。
是什么导致了这个错误
正如错误所提示的那样,另一个进程正在使用 /var/lib/dpkg/lock 或 /var/lib/dpkg/lock 文件。当您有 2 个或多个终端运行系统更新或升级时,就会发生这种情况。当您过早地取消或以其他方式更新 / 升级时,也可能发生这种情况。
如果遇到这种错误,完全没有必要惊慌,让我们探讨一些解决方案。
(1) 关闭所有正在使用 APT 管理器的进程
列出使用 apt 包管理器的进程
$ ps aux | grep - i apt
结束正在使用 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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。