安装软件时,系统提示有进程在占用安装进程。

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
意思:E:无法获取lock/var/lib/dpkg/lock frontend-打开(11:资源暂时不可用)
     E:无法获取dpkg前端锁(/var/lib/dpkg/lock frontend),是否有其他进程正在使用它?

然后需要查看进程dpkg是否被别的程序占用

root@yaoyafei:~# ps -ef | grep apt
root       2265      1  0 07:41 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily install
root       2279   2265  0 07:41 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install
root      11217  11199  0 07:43 pts/0    00:00:00 /usr/bin/dpkg --status-fd 12 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/libcurl3-gnutls_7.58.0-2ubuntu3.14_amd64.deb
root      11224  10931  0 07:43 pts/1    00:00:00 grep --color=auto apt

查资料说这是一个后台程序,在后台运行,并在启动系统时自动检查系统更新。
在Ubuntu18.04及更高版本中,它甚至可以自己下载并安装重要的安全更新。
查看到是一个系统开机内核更新的进程,建议等待几分钟,当然你也可以直接杀掉
如果其他程序正在使用apt,使用Linux命令行查找并终止正在运行的进程。

其他的问题可以参考 https://itsfoss.com/could-not-get-lock-error/
在大多数情况下,上述方法可以解决问题。但我的情况有点不同。我正在更新我的系统,不小心关闭了终端。由于这个原因,没有运行apt的进程,但它仍然向我显示了错误。
在这种情况下,根本原因是锁文件。如前所述,锁文件用于防止两个或多个进程使用相同的数据。运行apt或apt get命令时,它们会在一些地方创建锁文件。如果之前的apt命令没有正确终止,则不会删除锁定文件,因此它们会阻止apt get或apt命令的任何新实例。
要解决此问题,只需删除锁定文件。但在此之前,最好停止使用锁文件的任何进程。
使用lsof命令获取保存锁文件的进程的进程ID。检查错误并查看它所抱怨的锁文件,并获取保存这些锁文件的进程的id。

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

这些命令可能不返回任何内容,或者只返回一个数字。如果它们确实返回至少一个数字,请使用这些数字并像这样终止进程(将<process\u 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命令,一切都会好起来

其他情况2 无法获取dpkg前端锁,错误如下

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

如前上面的问题所述,您应该使用lsof命令找出哪个进程保持锁定前端:

sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
unattende 2823 root    5uW  REG    8,2        0 145221 /var/lib/dpkg/lock-frontend

unattende 示正在运行无人值守的安全升级,等待流程完成。
如果是其他进程则终止该进程,然后删除锁文件。

kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update

错误信息:dpkg: error: dpkg frontend is locked by another process
dpkg:错误:dpkg前端被另一进程锁定
首先,找出保存锁文件的进程的id

sudo lsof /var/lib/dpkg/lock-frontend

上面的命令将为您提供使用锁定文件的进程的详细信息。使用进程ID终止此程序:

sudo kill -9 PID

卸下锁并重新配置dpkg

sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

以上文章参考:https://itsfoss.com/could-not-get-lock-error/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐