介绍
在 Ubuntu 中,你有时可能会在尝试运行apt
命令时遇到错误:
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?
此消息让你知道 dpkg(Debian 软件包管理器服务)不可用。
如何修复Could not get lock错误?使用本指南中的方法解决 Ubuntu“Could not get lock…”错误。
先决条件
- 访问终端窗口/命令行
- 具有sudo或root权限的用户帐户
修复“Could not get lock”Ubuntu 错误的 5 个方法
Could not get lock解决办法:默认情况下,更新服务在 Ubuntu 启动时启动。自动更新程序使用dpkg来检查和安装更新。
该dpkg的服务锁定本身,这样两个进程不会同时更新的内容。该服务被锁定以避免系统中的潜在损坏。但是,这也意味着用户不能运行简单的apt
命令。
1:等待或重启
看到错误后,请等待系统最多 10 分钟,然后再次尝试安装软件。
如果你确定没有安装任何东西,你可以重新启动机器并重试。
调整自动更新的设置:
1.单击Activites >搜索。
2. 输入更新。
3. 单击软件和更新图标。
4. 使用复选框和下拉菜单选择你喜欢的更新计划。
注意:我们建议保持自动更新开启。或者,你可以将它们设置为不那么频繁或通知你而不是自动下载。
2:检查正在运行的进程
1.如何修复Could not get lock错误?如果你已经尝试等待并重新启动系统,但仍然出现错误,请使用以下命令查看正在运行的安装服务:
ps aux | grep -i apt
2. 如果有任何使用apt 的应用程序,它们将出现在列表中。查找类似于以下内容的条目:
/usr/lib/apt/apt.systemd.daily update
3. 该daily update
消息表示你的系统正在运行正常更新。你必须等待此过程完成,但不需要其他任何操作。
你可能有另一个正在运行的apt进程:
root 2810 0.0 0.0 72948 4312 pts/0 S+ 15:03 0:00 sudo apt-get remove logstash
最重要的列是第二列,其中列出了PID(进程 ID),以及显示使用 apt 的服务的最后一列。
4. 或者,你可能有一个仍在运行的dpkg服务。要找到它,请使用以下命令:
ps aux | grep -i dpkg
dpkg 输出看起来类似于 apt 输出。
3:解决卡住的 Apt 服务
1. Could not get lock解决办法:如果你有一个神秘的apt或dpkg服务在运行,请终止它并查看是否能解决你的错误。使用以下命令:
sudo kill 8808
2. 替换8808
为第 2 步中的实际进程 ID (PID)。它应该完成并返回到新的命令提示符行。如果没有,请通过添加选项强制进程停止-9
:
sudo kill -9 8808
这应该已经解决了这个问题。
4:删除锁定文件
Ubuntu 中的错误消息可能类似于以下内容:
/var/lib/dpkg/lock
/var/lib/dpkg/lock-frontend
/var/lib/apt/lists/lock
/var/cache/apt/archives/lock
如何修复Could not get lock错误?这些是锁定文件,创建它们是为了防止apt或dpkg 的两个实例同时使用相同的文件。如果安装中断或未完成,就会发生这种情况。删除锁定文件的风险由你自己承担。
要删除锁定文件,请使用以下rm
命令:
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
删除这些文件应该可以修复错误。
注意:阅读如何在 Linux 中删除文件和目录以了解更多信息。
5:重新配置dpkg
1.--configure
如果你刚刚删除了锁定文件,请运行该命令。此外,如果你收到以下错误,此命令将有所帮助:
“dpkg was interrupted, you must manually run ‘sudo dpkg –configure -a’ to correct the problem.”
2. 输入如上所示的命令:
sudo dpkg --configure -a
输出返回一个新行,该命令应该可以解决问题。
修复 Could not get lock /var/lib/dpkg/lock-frontend 错误
修复此错误的步骤遵循我们上述方法中的类似模式。完整的错误是:
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?
1.不要立即删除锁定文件。在此之前,找到并终止可能正在使用这些文件的所有进程。
sudo lsof /var/lib/dpkg/lock-frontend
2. 输出返回类似于以下内容的结果:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 1127 root 2oW REG 7,2 0 165231 /var/lib/dpkg/lock-frontent
3. Could not get lock解决办法:如果你unattended
在命令列下看到,则你的系统正在安装安全更新。等待该过程完成。
4. 否则,记下所有进程 ID 并使用 force 选项杀死它们:
sudo kill -9 process_id
5. 完成此操作后,你可以尝试删除锁定前端文件。
sudo rm /var/lib/dpkg/lock-frontend
这应该修复错误。
6. 删除锁定文件后你可以尝试的最后一件事是重新配置 dpkg,如我们在第五部分中所示。
sudo dpkg --configure -a
如何修复Could not get lock错误?要测试这些步骤是否修复了错误,请运行更新命令:
sudo apt update
当该过程成功完成时,这表明你修复了“E:无法获得锁/var/lib/dpkg/lock”错误。
注意:我们处理的错误有多种不同的形式,但修复的方法是相似的。“Could not get lock...”错误的一些变体是:
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?
结论
本文解释了在 Ubuntu上修复“ E:Could not get lock /var/lib/dpkg/lock ”错误的五个方法。
上述方法之一将解决该问题,并且该错误可能会在重新启动系统后自行解决。