这个错误尤其对那些对这个错误原因不了解的 linux(ubuntu)新手而言更加恼人。
下面是一个例子,展示了出现在 ubuntu 16.10 上的文件锁定错误:
<code>tecmint@tecmint:~$ sudo apt install neofetch</code>
<code>[sudo] password for tecmint:</code>
<code>e: could not get lock /var/lib/dpkg/lock - open (11: resource temporarily unavailable)</code>
<code>e: unable to lock the administration directory (/var/lib/dpkg), is another process using it?</code>
下面的输出是另外一个可能显示的错误:
<code>e: could not get lock /var/lib/apt/lists/lock - open (11: resource temporarily unavailable)</code>
<code>e: unable to lock directory /var/lib/apt/lists/</code>
<code>e: unable to lock the administration directory (/var/lib/dpkg/), is another process using it?</code>
你将来遇到这个错误该怎么去解决?有好几种方法处理这个错误,但是本篇中我们会用两种或许是最简单和最有效的方法来解决它。
<a target="_blank"></a>
<code>$ ps -a | grep apt</code>

找出 apt 以及 apt-get 进程
上面截图中的第一列是进程 id(pid)。
<code>$ sudo kill -9 processnumber</code>
<code>或者</code>
<code>$ sudo kill -sigkill processnumber</code>
比如,下面命令中的<code>9</code>是 <code>sigkill</code> 的信号数,它会杀掉第一个 apt 进程:
<code>$ sudo kill -9 13431</code>
<code>$ sudo kill -sigkill 13431</code>
锁定的文件会阻止 linux 系统中某些文件或者数据的访问,这个概念也存在于 windows 或者其他的操作系统中。
一旦你运行了 apt-get 或者 apt 命令,锁定文件将会创建于<code>/var/lib/apt/lists/</code>、<code>/var/lib/dpkg/</code>、<code>/var/cache/apt/archives/</code> 中。
这有助于运行中的 apt-get 或者 apt 进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。
重要提醒:万一你在没有看到 apt-get 或者 apt 进程的情况下在上面两个不同的文件夹中看到了锁定文件,这是因为进程由于某个原因被杀掉了,因此你需要删除锁定文件来避免该错误。
首先运行下面的命令来移除 <code>/var/lib/dpkg/</code> 文件夹下的锁定文件:
<code>$ sudo rm /var/lib/dpkg/lock</code>
之后像下面这样强制重新配置软件包:
<code>$ sudo dpkg --configure -a</code>
也可以删除 <code>/var/lib/apt/lists/</code> 以及缓存文件夹下的锁定文件:
<code>$ sudo rm /var/lib/apt/lists/lock</code>
<code>$ sudo rm /var/cache/apt/archives/lock</code>
接下来,更新你的软件包源列表:
<code>$ sudo apt update</code>
<code>$ sudo apt-get update</code>
原文发布时间为:2017-12-16
本文来自云栖社区合作伙伴“linux中国”