网站搜索

修复 Ubuntu 中的“无法锁定管理目录 (/var/lib/dpkg/)”


Ubuntu Linux 或其衍生产品如 Linux Mint(我实际上将其用作我的主要操作系统)中使用 apt-get 命令或相对较新的 APT 包管理工具时,进行日常工作),您可能会遇到错误 - “无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程使用它”命令行。

这个错误可能非常烦人,特别是对于可能不知道错误原因的新 Linux (Ubuntu) 用户来说。

下面是一个示例,显示了 Ubuntu 16.10 中的锁定文件错误:

tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
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?

下面的输出是同一错误的另一个可能实例:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/ 
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?

如果以后再遇到上述错误,该如何解决呢?有多种方法可以处理此错误,但在本指南中,我们将介绍两种最简单且可能是最有效的解决方法。

1.查找并杀死所有 apt-get 或 apt 进程

运行以下命令生成名称包含单词 apt 的所有进程的列表,您将获得包含所有 aptapt-get 的列表 通过使用 ps 和 grep 命令以及管道进行处理。

ps -A | grep apt

对于您在上述命令的输出中看到的每个 apt-getapt 进程,请使用以下命令终止每个进程。

进程ID (PID) 可在上面屏幕截图的第一列中找到。

sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber

例如,在下面的命令中,其中 9SIGKILL 信号的信号编号,将杀死第一个 apt 进程:

sudo kill -9 13431
OR
sudo kill -SIGKILL 13431

2.删除锁定文件

锁定文件只是阻止访问 Linux 系统上的其他文件或某些数据,这个概念也存在于 Windows 和其他操作系统中。

一旦您运行 apt-getapt 命令,就会在以下任意目录下创建一个锁定文件 /var/lib/apt/lists//var/lib/dpkg//var/cache/apt/archives/

这有助于避免已经运行的 apt-getapt 进程被用户或其他需要处理正在使用的文件的系统进程中断。 apt-get 或 apt。当进程执行完毕后,锁定文件将被删除。

重要:如果上述两个目录中仍然存在锁定,并且没有明显的 apt-get 或 apt 进程运行,这可能意味着该进程因某个原因而被保留或其他,因此您需要删除锁定文件才能清除错误。

首先执行以下命令删除/var/lib/dpkg/目录下的锁定文件:

sudo rm /var/lib/dpkg/lock

然后强制包重新配置,如下所示:

sudo dpkg --configure -a

或者,删除 /var/lib/apt/lists/ 和缓存目录中的锁定文件,如下所示:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock

接下来,更新您的软件包源列表,如下所示:

sudo apt update
OR
sudo apt-get update

总之,我们已经介绍了两种重要的方法来处理 Ubuntu(及其衍生版本)用户在运行 apt-getapt 时面临的常见问题以及能力命令。

对于处理这种常见错误,您还有其他可靠的方法可以分享吗?然后通过下面的反馈表与我们联系。

此外,您可能还想了解如何查找和终止正在运行的进程,并阅读有关在 Linux 中终止进程的 Kill、pkill 和 Killall 命令的简单指南。