最近,牛奇网在 Ubuntu 上尝试使用 apt 命令安装 Lynx 应用程序时遇到以下错误:
Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
下面介绍一下,遇到了上述的错误,应该如何处理。
修复“Unable to lock the administration directory (/var/lib/dpkg/)”错误
如果您遇到上述错误,可能是因为某些程序正在进行更新。当正在更新时,会锁定 dpkg 文件(Debian 软件包管理器),以防止两个进程同时更改内容。
下面我们来看一下应该如何处理上述问题。
场景 1:
我们首先检查一下,是否正在运行系统更新或正在安装某些程序。
如果使用的是命令行,可以检查软件中心、软件更新、Synaptic 软件包管理器、Gdebi等应用程序是否正在运行任何更新或安装。如果有的话,请等待程序完成运行过程。此外,还要检查所有打开的终端窗口,看看是否正在运行更新或正在安装程序。如果有请等待它完成。
如果上述的问题都不存在,可检查一下是否有进程正在运行 apt 命令。可执行下面的命令:
ps aux | grep -i apt
它可能会显示如下所示的输出:
iuqi@niuqi-machine:~$ ps aux | grep -i apt
root 7622 0.0 0.0 2616 516 ? Ss 17:27 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root 7627 0.0 0.0 2616 1536 ? S 17:27 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt 8098 1.1 0.5 27148 9760 ? S 17:29 0:01 /usr/lib/apt/methods/http
niuqi 8173 0.0 0.0 11984 664 pts/0 S+ 17:31 0:00 grep --color=auto -i apt
如果看到 apt 正在被 apt.systemd.daily update 之类的程序使用,说明系统正在进行更新。
如果在 Ubuntu 服务器上,可以通过查看 /etc/apt/apt.conf.d/20auto-upgrades 文件的内容,来确认是否启用了无人值守升级。
所以如果看到 apt.systemd.daily 正在使用 apt 进程,我们需要耐心等待一些时间。等自动更新完成后,应该就能够正常安装软件了。
上面介绍的是最好的情况,如果是其他程序正在使用 apt,则需要以其他的方式来处理。
场景 2:
首先,使用 Linux 命令行查找正在运行的进程。执行下面的命令:
ps aux | grep -i apt
这将返回运行 apt 或 apt-get 的进程的 ID。
然后通过下面的命令来终止该进程。将 <process_id> 替换为在上一个命令的输出中获得的进程 ID。
sudo kill <process_id>
通过运行下面的命令,检查使用 apt 的进程是否被终止。
sudo ps aux | grep -i apt
如果它仍在运行,使用下面的命令强制终止它:
sudo kill -9 <process_id>
另一种更简单的方法是使用 killall 命令。停止所有正在使用 apt 的进程:
sudo killall apt apt-get
场景 3 :
在大多数情况下,上述方法可以解决前面的 apt 问题。但有时可能有特殊情况,比如在使用命令行更新系统时,意外关闭了终端。
这里建议先尝试上面介绍的两种方法,或先重新启动系统试一下。如果这些都不起作用,那么可以选择删除锁定文件。
但在删除锁定文件之前,最好停止使用锁定文件的进程。使用 lsof 命令获取使用锁定文件进程的 ID。执行下面的命令:
sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
这些命令可能不返回任何内容,或者只返回一个进程 ID。如果返回了进程 ID ,使用下面的命令中止该进程:
sudo kill -9 <process_id>
然后,使用以下命令删除锁定文件:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
之后,重新配置软件包:
sudo dpkg --configure -a
现在,如果再次运行 sudo apt update 命令,应该不会出现之前的错误。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/could-not-get-lock-error/