在我的 VMware 机器上安装 Kali Linux 后,我尝试更新 resources.list 文件,但由于某种原因,在使用命令时
apt-get upgrade
会导致错误,如下所示
E: 无法锁定 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录 (var/lib/dpkg/) 是否有另一个进程正在使用它?
该apt-update
命令有时有效,有时会导致禁止 IP 错误,无法连接 Linux 存储库。我的 Kali 存储库 resources.list 文件是:
德布http://http.kali.org/kalikali-rolling 主要非免费贡献
我不知道如何纠正这些错误,也找不到任何解决方案。
答案1
- 第一条消息很容易处理:
E: 无法获取锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
此消息表明正在打开其他用于安装/卸载软件的程序。您应该找到该软件并将其关闭,然后重新启动系统。
- 第二条错误消息很棘手:
E:无法锁定管理目录(var/lib/dpkg/)是另一个进程正在使用它吗?
解决此错误的方法之一是删除锁,但这是最后的手段,不建议。替代方案如下:当 apt 进程运行时放置锁,并在进程完成时删除锁。如果有锁且没有明显的进程在运行,这可能意味着该进程由于某种原因被卡住。尝试这个命令:
ps aux | grep apt
至少会捕获包含单词 apt 的进程。如果您看到 apt-get 进程或 aptitude 进程看起来卡住了,您可以尝试
kill <apt_process_ID>
如果这不起作用尝试
kill -9 <apt_process_ID>
这应该会终止进程并可能删除锁。终止 apt 或 aptitude 进程是无害的,除非它实际上是在软件包安装过程中。无论如何,如果进程卡住了,您可能别无选择,只能终止它。
直接终止 dpkg 进程(如果存在)并不是一个好主意,因为如果 dpkg 处于活动状态,则它可能正在操作程序包数据库,并且终止它可能会使程序包数据库处于不一致状态;即已损坏。
一般来说,杀死 apt-get 或 aptitude 进程要安全得多。
现在,如果前面的步骤失败,那么您必须删除锁(同样,这是最后的解决方案,不推荐)。
您可以使用以下命令删除锁定文件:
sudo rm /var/lib/apt/lists/lock
您可能还需要删除缓存目录中的锁定文件
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
之后,尝试再次打开 Synaptic 包管理器。