无法锁定管理目录(/var/lib/dpkg/),是否有另一个进程正在使用它?

无法锁定管理目录(/var/lib/dpkg/),是否有另一个进程正在使用它?

尝试使用时出现此错误apt-get

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

这应该作为最后的手段。如果你不小心使用,可能会导致系统崩溃。请尝试其他 答案 第一的在执行此操作之前。

您可以使用以下命令删除锁文件:

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

您可能还需要删除缓存目录中的锁定文件

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

此后,尝试再次打开 Synaptic。

答案2

(注:我的原始回答经过了 Guillem Jover 的广泛编辑,主要dpkg开发人员

我看到几乎所有答案都建议删除锁。必须永远不可能完成,最好是终止dpkg(这应该可以抵御这种事件),而不是考虑删除其锁定文件(它的存在并不表示锁定被持有)。锁定是在进程运行时获取的dpkgapt并在进程完成或被终止时释放(必要时由内核释放)。较新dpkgapt较新版本将打印持有争用锁定文件的进程的 PID,apt现在甚至默认等待锁定被释放。这在dpkg 常见问题

如果你试试:

sudo fuser -vik -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock
sudo dpkg --configure --pending

这将提示终止当前持有这些锁定文件的任何进程,一旦终止,锁定将被释放。如果您看到一个apt-get进程或一个aptitude看起来卡住的进程,那么终止它们应该比打包系统在安装软件包的过程中造成的危害要小。如果进程真的卡住了,而您别无选择,您可能需要通过传递-KILL而不是来终止它们-TERM。然后您需要完成任何待处理的配置,以便dpkg使它们处于更好的状态,并且它还可以将其日志的更新集成到主状态数据库。

如果存在进程,直接终止dpkg它通常不是一个好主意,因为如果dpkg处于活动状态,某些维护脚本可能会执行无法抵御突然终止(或崩溃)的操作,但 dpkg 内部应该能够抵御这种突然终止,最好这样做,而不是删除任何锁定文件,因为这样做更有可能造成损坏两个都dpkg 数据库和文件系统。

apt-get终止诸如或进程之类的前端aptitude虽然不是理想的选择,但通常更安全。

答案3

删除您的/var/lib/dpkg/lock文件并强制重新配置包。

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

此后它应该可以工作。

答案4

sudo如果您在执行 apt 命令时忘记使用,您将收到此消息。

否则,这表明有其他程序正在安装或删除软件,并在执行操作时锁定了 apt 数据库。可以执行此操作的程序有:

  • 软件中心
  • 更新管理器
  • apt 链接安装程序(我认为这现在通过 SC)
  • apt-get 或 aptitude 命令行实用程序。
  • Synaptic 包管理器

重要提示:以下操作只能作为最后的手段,因为它可能会导致系统崩溃。首先尝试终止正在运行的任何实例apt或,aptitude如中所述Faheem 的回答

您可以通过删除文件来强制解除锁定,但是不建议在没有先关闭安全持有锁的程序的情况下,因为您可能会导致损坏或中断安装(不好)。João 提供的命令应该关闭持有锁的程序,然后移除锁,但不会保护您免受安装中断的影响:

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   

并且相同的命令可以用于 apt 缓存锁:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

相关内容