![终端错误响应](https://linux22.com/image/1056757/%E7%BB%88%E7%AB%AF%E9%94%99%E8%AF%AF%E5%93%8D%E5%BA%94.png)
我的笔记本电脑运行的是 ubuntu 16.04。当我在终端窗口输入命令来安装新软件时,出现以下错误:
ashutosh@ashutosh-HP-Pavilion-g4-Notebook-PC:~$ sudo apt-get install arduino
[sudo] password for ashutosh:
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
嗯,它确实说明了发生了什么:apt-get 无法获得对包管理文件的“锁定”(基本上,保证它是唯一可以访问它的人)因此,第一个想法是正在安装其他东西。例如,如果“软件更新程序”正在更新您的系统,同时您认为“哇,我想安装一些东西”,您就会得到这个信息。“软件更新程序”获得了锁定,您尝试获取它,但显然被拒绝了。
现在,您需要弄清楚哪个进程实际上拥有锁。为此,我们将使用 lsof,意思是“列出打开的文件”。感兴趣的文件是“/var/lib/dpkg/lock”。
$ lsof /var/lib/dpkg/lock
通常情况下,这应该会给你一个“拥有”锁的进程。关闭该进程就可以了。
如果没有进程,则很可能是过期锁。虽然我不需要这样做,但我会通过发出以下命令来删除锁:
sudo rm /var/lib/dpkg/lock
请注意,当您忘记包管理器命令(apt、apt-get、aptitude 等...)上的“sudo”时,您可能会收到错误,但您包含了它。