收到错误消息“Could not open lock file /var/lib/dpkg/lock”可能会令人困惑,因为它可能会在之后立即询问您是否是 root,即使您正在运行更新命令 sudo 字首。 这个错误命令几乎会出现在所有使用 apt-get 包管理器的地方。 无论您是使用多个版本之一升级台式机还是笔记本电脑 Ubuntu 或带有 Raspbian 的 Raspberry Pi Debian 旋转,您可能会发现在这些平台中的任何一个上都可能出现问题。
但是,解决方案非常简单。 您通常可以忽略任何询问您是否是 root 的问题,直接进入问题的核心,这与两个试图同时访问锁定文件的进程有关。
方法一:确定 sudo 您可以访问命令的每个部分
如果你要跑 sudo apt-get update && apt-get upgrade,您可能会收到此错误,因为第二个进程没有访问 /var/lib/dpkg/lock 文件的适当权限。
试着跑步 sudo 易于获取更新&& sudo 易于获取更新 看看这是否有什么不同。 如果是这样,那么你的问题现在已经解决了,这仅仅是因为你没有给第二个进程足够的权限来访问该文件。 注意这个命令会更新再更新你所有的包,所以它可能会提示你批准它,它可能需要一段时间才能运行。
但是,如果没有,则问题已经完全解决,您无需执行任何其他操作。
方法二:删除/var/lib/dpkg/lock文件
那些使用 curlwget 或其他秘密下载文件的命令的人可能还需要在该命令之前使用 sudo 他们应该在 Raspbian 上工作,因为在某些情况下这会取代 apt-get。 那些使用纯 DebianXubuntu、Lubuntu 的人, Linux Mint 和其他类似的台式机/笔记本电脑不必担心这一点,但可能值得再试一次。
如果这仍然不起作用,您可能需要检查在运行更新时是否有其他程序试图访问该文件。 尝试使用 sudo lsof /var/lib/dpkg/锁 查看是否有任何其他打开它的进程正在运行。 如果您在某处打开它,则可以关闭该应用程序。
请注意,应用程序拥有打开此文件的读写权限意味着,通过扩展,该程序必须具有 root 权限,因此您需要 root 权限才能关闭该程序。 如果您使用的是支持此功能的图形桌面环境,您甚至可以尝试查看任务管理器应用程序。 如果您有权这样做,只需右键单击有问题的进程并关闭。 也可以从命令行尝试 kill 或 killall 命令。
现在您可以尝试再次运行您的 apt-get 命令,看看是否有任何不同,但如果有,您将不需要做任何其他事情。 如果仍然有问题,请尝试直接删除锁定文件。 虽然这应该被视为最后的手段,但它通常不会导致与 apt-get 程序相关的任何问题。 在执行此操作之前,您仍然需要用尽其他方法,因为它会干扰 apt 系统。
重新启动有时会有所帮助,但如果您经常在服务器上或在 Raspbian 设备上,那么这可能不是一个可行的选择。 试着跑 sudo rm /var/lib/dpkg/bloquear && sudo rm /var/lib/apt/列表/锁,这将释放 apt 在您运行时正在扫描的特定文件。 一定要小心这些文件的名称,因为以 root 身份运行 rm 是破坏性的。
假设您在用尽其他选项后已完成此操作,您可以尝试再次运行更新命令,看看会发生什么。 您应该不会再有任何问题,因为那时文件将不再存在,尽管 apt-get 例程将能够在运行时重建它们。
接下来阅读
- 修复:无法打开文件 /var/lib/dpkg/status
- [FIX] 无法连接 Docker 守护进程 ‘unix:///var/run/docker.sock’
- 修复:“线程 /usr/bin/dpkg 返回错误代码 (1)” Ubuntu
- 安排: Safari 无法下载文件,因为没有足够的磁盘空间