如何解决’E:无法在Ubuntu中获得锁/ var / lib / dpkg / lock’错误

最近,我遇到了“无法获取锁/ var / lib / dpkg / 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个或更多运行系统更新或升级的终端时,会发生这种情况。 当您过早,意外或以其他方式取消正在进行的更新/升级时,也会发生这种情况。 第二次尝试使用apt或apt-get命令将产生错误。

万一遇到此错误,绝对没有必要惊慌。 有几个选项可解决此问题。 让我们探索一些解决方案。

解决方案1)终止正在使用APT管理器的所有进程

诊断此问题的第一步是列出使用apt软件包管理器的进程。 为此,请使用ps命令,如下所示:

$ ps aux | grep - i apt

这是我得到的输出。

进程与apt命令相关

要清除该错误,您需要终止与apt命令关联的进程。 您可以通过发送SIGKILL命令来立即关闭该过程。 执行kill -9命令,后跟进程ID,如下所示。

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

完成后,使用ps命令再次验证进程是否已结束。 如果已全部清除,则可以毫无问题地继续更新系统。

解决方案2)

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

解决此问题的方法是摆脱apt锁定文件。 这很容易。 只需运行以下命令:

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

如果您得到的错误是“无法获取锁/ var / lib / dpkg / lock”。 错误,请删除锁定文件,如下所示:

$ sudo rm /var/lib/dpkg/lock

其他时候,您可能会收到/ var / lib / dpkg / lock-frontend错误。 lock-frontend错误表示当前正在运行使用apt / dpkg的图形应用程序。 它可以是Gdebi或突触软件包管理器或任何其他应用程序。

立即的补救措施是退出或关闭该应用程序,然后再尝试一次。 如果没有任何结果,只需删除/ var / lib / dpkg / lock-frontend文件,如图所示。

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

删除锁前端文件可能再次导致“无法获取锁/ var / lib / dpkg / lock”错误,因此,您将不得不再次删除锁文件。

$ sudo rm /var/lib/dpkg/lock

如果您碰到有关apt-cache锁定的错误,例如/ var / cache / apt / archives / lock,请继续操作并删除锁定文件,如图所示。

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

这就是您解决“无法获取锁/ var / lib / dpkg / lock”并且无法获取锁/ var / lib / apt / lists / lock错误的方法。 我敢肯定,如果您走得这么远,那么您现在应该已经解决了该错误。 让我们知道进展如何。

Sidebar