2012年7月17日星期二

Ubuntu在用apt更新时提示“无法获取排他锁”解决方法

有些时候,我们在用Ubuntu装软件,更新时会提示无法获取排他锁,但我们可能并没有进行可见的更新操作。

引起这样的原因有很多,例如有上次进行系统更新时出错了,引致系统的更新索引破损了等,又或者是apt没有正常工作了。

在甚至连重启都没办法修复的情况下,可以试试以下两个方法。

方法一:
这个方法假定是apt出错了,因此可以尝试找到apt的pid,再用kill指令把它强制关掉:

sudo ps -aux

找到输出中形如以下的行

root      4999  0.0  1.0  18204 15504 ?        SN   04:02   0:00 apt-get -qq -d

最后这里写着apt-get,可确定是由apt产生的线程,因此用kill指令后跟它的pid将它强制关掉

sudo kill  4999

这时候就可以解决apt占用排他锁的问题了。

但有时候,占用锁的可能并不是apt,也就是上面的ps指令中并没有apt的信息,这时候我们可以删除锁的文件来强制解除锁

利用rm指令删除以下两个文件

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

这时候无论是线程正在占用锁,也会被解除锁定,这种方法较为暴力,可能会对系统造成损害。因此记得要启动软件更新管理器,启动管理器后,按检查,它就会自动检查索引什么的完整性,并提示需要进行索引的修复工作。

没有评论:

发表评论