尝试使用apt-get时出现此错误:

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?  


如何解决此问题?

评论

如果重新启动,这也是正确的吗?也许有些旧的apt线程正在锁定文件,您需要找出并杀死它,或者仅重新启动即可执行该操作。

此过程几乎总是可以解决此问题,如果没有解决,则有时其输出(来自终端的文本)很有用。如果您决定这样做,则可以将此文本添加到您的问题中。

您可以使用sudo lsof / var / lib / dpkg / lock查找拥有锁定文件的进程(如果为空,则假定该锁是先前引导中留下的,并且可以是sudo rmd),然后考虑执行sudo kill- 9 (从lsof输出中获取

这可能表明其他东西正在安装或删除软件,并在执行操作时锁定了apt数据库。

在我的Ubuntu 18.04 VM上,有一个名为无人值守更新的进程,该进程由root 0 15:58之类的进程运行。 00:00:00 / bin / sh /usr/lib/apt/apt.systemd.daily lock_is_held安装,似乎每次我打开机器时都运行apt update。根据更新的大小(通常对应于自上次使用该机器以来的时间),此过程可能需要1到10分钟才能完成。之后,将释放该锁,以进行手动apt安装和更新。试试:sudo ps aux | grep apt或`sudo ps aux | grep无人值守。

#1 楼

这应该用作最后的手段。如果不小心使用它,可能会导致系统损坏。请先尝试其他答案,然后再执行此操作。

您可以使用以下命令删除锁定文件:

sudo rm /var/lib/apt/lists/lock


您可能还需要删除缓存目录中的锁定文件

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


之后,请尝试再次打开Synaptic。

评论


好的...但是为什么会这样呢?

–Jaime Hablutzel
2012年5月26日22:40

@jaime:执行过程中可能停止了apt-get(或它的某些GUI前端),从而使apt处于锁定状态。

– bouke
2012年9月13日在12:15

@AnwarShah不,在删除系统文件之前,还有其他注意事项。

–脑袋
2013年12月31日14:47

rm / var / lib / dpkg / lock; dpkg --configure -a:

–WitchCraft
2014年1月15日15:07

这行不通。我仍然遇到相同的错误!

– IgorGanapolsky
16年7月24日在20:47

#2 楼

我看到几乎所有答案都建议删除该锁。我不建议您首先这样做。也许如果没有其他选择。在apt进程运行时放置该锁,并在该进程完成时将其删除。如果存在没有明显进程在运行的锁,则可能表示该进程由于某种原因而卡住。

如果尝试

ps aux | grep [a]pt




pgrep -a apt


至少将捕获包含单词apt的进程。如果看到apt-get进程或aptitude进程看上去卡住了,可以尝试

sudo kill processnumber


,如果不起作用,请尝试

sudo kill -9 processnumber


这将终止进程,并可能会解除锁定。杀死aptaptitude进程是无害的,除非它实际上在软件包安装过程中。无论如何,如果进程卡住,您可能别无选择,只能杀死它。

直接杀死dpkg进程(如果存在)不是一个好主意,因为如果dpkg是如果处于活动状态,则可能正在处理软件包数据库,并且将其杀死可能会使软件包数据库处于不一致状态;即已损坏。

杀死apt-getaptitude进程通常更安全。

评论


@Link我认为杀死dpkg不是一个好主意,因为通常dpkg直接操作软件包数据库,这可能会导致损坏。

– Faheem Mitha
2013年9月14日20:17在

如果杀死dpkg可能会破坏其数据库,则dpkg的设计错误。期。

–杰伊·沙利文(Jay Sullivan)
2014年11月18日,下午3:36

对我来说,这导致dpkg错误被中断,您必须手动运行'sudo dpkg --configure -a'来解决问题。当再次运行sudo apt-get dist-upgrade时。运行命令即可解决问题。我爱尼克斯!

–Wayne Phipps
2015年6月26日13:17



注意,killall apt-get与ps / kill组合的功能相同。

–塞林
16年1月15日在22:09

请注意,我发现在终止流氓apt进程后需要运行sudo dkpg --configure -a才能使事情恢复正常。

– starbeamrainbowlabs
16-10-17在18:35

#3 楼

删除您的/var/lib/dpkg/lock文件并强制重新配置软件包。

sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a


此后应该可以使用。

评论


sudo-以root身份执行命令,rm-删除文件。也许尝试sudo rm / var / cache / apt / archives / lock

– kubahaha
2012年9月24日13:56



这不是一个好建议:一味地删除锁可能会破坏dpkg的状态。

–池
2015年2月2日在18:09



为什么现在不修复呢?

–玛丽安·克鲁斯派(MarianKlühspies)
16年11月1日在12:19

这对我有用。上面的aws没有。

– 1rq3fea324wre
17年5月1日在22:53

可以确认普尔说了什么。它使文件之一不可分割,从而破坏了锁定状态。它告诉我在解析/ var / lib / dpkg / updates / 0006时会出错。我用rm删除了有问题的文件,然后重新运行sudo dpkg --configure -a,所有文件似乎又按预期工作了。

–培根·布拉德
18-2-19在21:58



#4 楼

达到此目的的最可能方法是:


启动Ubuntu
启动终端
键入sudo apt-get install whatever


,然后命令行aptupdate-manager会自动轮询重叠。

因此,如果您在几分钟后重试,应该可以解决。

评论


与建议仅删除文件的六次答复相比,这是个很好的提示;-)我无意中遇到了问题,很可能是这样!

– Alex
2014年1月21日,16:14

足够安全,必须稍等片刻才能安装sudo apt-get。

– Sargas
2015年5月11日17:56

好吧,这并不总是能正常工作,是的,我已经使用过多次重启。如果不合适,请先尝试一下askubuntu.com/a/315791/378845,然后再取下锁

– Menuka Ishan
16-10-23在7:03

@menuka,为什么不就这样结束呢。

–池
16 Dec 24 '14:38

您可以将其与执行ps aux结合使用| grep倾向于在杀死任何东西之前查看是否正在更改或使用系统监视器进行监视...

– EugenioMiró
18年7月19日在15:12

#5 楼

如果您在执行apt命令时忘记使用sudo,则会收到此消息。

否则,这表明其他东西正在安装或删除软件,并且在执行操作时已锁定apt数据库。可以执行此操作的程序是:


软件中心
更新管理器
apt链接安装程序(我认为这现在通过SC进行)
apt-get或aptitude命令行实用程序。
Synaptic软件包管理器

重要提示:只能尝试以下方法,因为它可能会使您的系统崩溃。首先尝试按照Faheem的回答中所述杀死所有正在运行的aptaptitude实例。

您可以通过删除文件来强制关闭该锁,但是建议您先关闭安全持有该锁的程序,因为您可能会导致损坏或中断安装(错误)。 João提供的命令应先关闭持有该锁的程序,然后再卸下该锁,但不会保护您免受安装中断的影响:

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   


并且同一命令可以用于apt缓存锁定:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock


评论


收到错误消息后,我正在更新软件。

–雨滴
13年8月16日在22:04

这让我崩溃了

– umpirsky
2014年9月21日在17:33

sudo fuser -cuk / var / cache / apt / archives / lock直接重新启动了我的计算机。 apt-get现在已解锁。

– MaximimeR。
2014年12月4日21:47

这使我的整个服务器崩溃。

–에이바
2015年1月5日在21:28

中途杀死apt或dpkg不是一个好主意。

–池
15年2月2日在18:12

#6 楼

只有一个程序可以持有该锁。确保您没有运行智能,突触或熟练的技术。关闭程序,然后再次运行,它应该可以工作。您可能已经打开了突触,或者正在运行另一个终端窗口以运行apt-get,或者正在运行更新管理器。检查它是否在运行,如果有的话它们正在运行,请关闭它,然后重试。

在终端中尝试此命令以查找正在运行的内容

ps -e | grep -e apt -e adept | grep -v grep


注意:
如果仍然无法打印任何内容,请在终端中键入以下内容以解除锁定

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


现在您可以安装任何软件包。

评论


我认为删除锁定文件是一件危险的事情。如果出于正当的原因另一个进程正在锁定-并且您删除了该锁定文件并以您之前的工作进行了强制安装-则可能以负面的方式严重影响您的系统。

– Marco Ceppi♦
2010-11-30 5:49

这就是为什么我在Note中给出的原因。如果以上所有方法均失败,那么唯一的方法就是删除锁。只要dpkg和apt-get / aptitude进程未运行,就不会造成任何问题

–karthick87
2010-11-30 5:55



pgrep -f'apt | adept | dpkg'短很多。

– dhchdhd
17年9月12日在21:38

谢谢!这可行。 pgrep -f'apt | adept | dpkg'然后是sudo skill(number),杀死所有数字,然后安装作品!

–创建者
18 Mar 6 '18 at 0:22

@Barry与整个path + process匹配。我认为pgrep -a'apt | adept | dpkg'是一个更好的较短等效项。

–巴勃罗·比安奇(Pablo Bianchi)
19 Mar 5 '19 at 17:01



#7 楼

到目前为止,最好的方法是在不中断可能的后台运行安装的情况下正常运行(因为可能通过删除锁定文件而发生),是使用apt:

错误:

# sudo apt-get upgrade
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?`


解决方案:

sudo systemctl stop apt-daily.timer


升级系统后,我建议重新启用它,因为它可以修复锁定的错误随着升级。

sudo systemctl start apt-daily.timer

我尚未验证此错误在升级后得到解决。验证通过后,我将添加一个新评论

评论


升级系统并再次启动apt-daily.timer服务后,到目前为止,我还没有遇到这个问题。


17年2月2日在10:41

与上面所有那些获得较高投票的答案相比,这可能是最干净的方法。在我的情况下,它可以正常工作,谢谢!

– CygnusX1
17-10-25在19:45

这在17.10上也完美无瑕

–古怪的长老
17年12月6日在4:59

工作于17.10 +1

–Eng.Fouad
18年2月13日在9:27

在18.04中工作正常。 :)

–Naveen Kumar V
18年6月7日在2:56

#8 楼

首先,我们应该检查使用lsof的哪个进程创建了锁定文件:

sudo lsof /var/lib/dpkg/lock


,或者在/var/lib/apt/lists/lock有问题的另一种情况下:

sudo lsof /var/lib/apt/lists/lock


输出将类似于以下内容:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock


然后我们应该检查该逗号在做什么,我们可以使用以下命令来找到它pspgrep等;该命令是apt-get,所以我运行:

pgrep apt-get -a


-a开关为我列出了完整的命令,在我的情况下是:

 pgrep -a apt-get
 12127 apt-get update


我们可以看到它正在运行update子命令,我也可以运行类似的命令:

ps -f 12127


产生:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update


在这种情况下,我将等待一分钟以释放资源,如果2或3分钟后问题仍然存在,或者该命令是我不在乎或不关心的东西对系统有害(例如apt-get update),我向进程发送了SIGTERM

sudo kill -15 12127


它应该做的工作,如果没有,我要发送这次SIGINT(就像按CTRL + C一样):

sudo kill -2 12127


如果还是不能正常工作,我们应该发送SIGHUPkill -1),最后如果没有作品我只是简单地杀死了进程:

sudo kill -9 12127



sudo pkill -9 apt-get


然后我删除了忙碌的资源urces:

sudo rm /var/lib/apt/lists/lock


评论


一个小问题是/ var / lib / dpkg / lock而不是/ var / lib / apt / lists / lock是问题中的文件。

–柴T.雷克斯
17年4月24日在21:12

感谢有根之神终于有人提到pgrep和pkill。

– dhchdhd
17年9月12日在21:39

这应该是公认的答案。

– Marwan Nabil
18年7月10日在10:31

如果安装或升级导致此问题,则可能还需要dpkg --configure -a

– LUXS
19年4月20日在7:52

这对我有用

–Sundeep
19-09-26在7:22

#9 楼

此错误可能是由于Update Manager尝试在后台自动刷新软件包列表而导致的,通常是在您登录后立即这样做,从而锁定了目录。在这种情况下,请等待几秒钟(或更长时间, (如果您最近的更新是很久以前的),则可以完成该操作或启动Update Manager来检查状态。

评论


安装Ubuntu 16.04之后,我拥有此权限。原来,Ubuntu软件中心中有一个后台进程正在等待我手动安装一些更新。

– jvriesem
16年5月12日在21:16

全新安装16.04后,同上。在我看来,这比“几秒钟”要长得多(我有时间阅读整个问答页面!),但在刷新ps几次之后,我看到dpkg正在更新全部内容,我耐心地等待着这一切。完成。然后,我运行Software Updater,直到所有内容都更新为止,然后再尝试安装新的内容。

– Charlie Joynt
17 Mar 2 '17 at 21:51



#10 楼

不要太快地删除某些东西,它可能会完全损坏您的系统;您可以等到当前正在安装或卸载的程序完成其任务,然后再进行访问。如果您认为当前没有安装或卸载任何东西,则只需使用命令sudo reboot重新引导系统。

评论


这看起来像是评论而不是答案。您能否将其作为对其响应的答复的评论?

– jvriesem
16年5月12日在21:15

@jvriesem我认为这是一个非常重要的答案,因为他的意思是许多其他答案中所缺少的!

– Volker Siegel
16年7月2日在10:31

@jvriesem这通常是正确的答案。当我长时间不使用它们时,我的Linux容器经常会遇到此问题。等一下是的,可能需要一段时间。但是让它在进入并破坏事物之前做好工作。

–earth2jason
19 Mar 23 '19 at 13:57

这应该是第一件事。大多数情况下,此答案可解决问题。我可能有4-5次了,重新启动总是可以解决它。

– Jan
19年7月2日在6:47



#11 楼

如果您并行运行“更新管理器”以进行任何更新检查或在安装过程中放置​​锁定,则会发生这种情况。如果您在未运行“更新管理器”的情况下遇到相同的错误,则必须将其从/var/lib/dgkg/lock中删除,这绝对不能手动完成

sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock


可以。摘自:https://askubuntu.com/a/15469/68707

评论


这就是我的问题!

–LondonRob
2014年9月19日下午13:12

更好的解决方案,因为fuser命令用于跟踪其他进程(如果仍然有效)

–诺丁人
15年3月18日在11:50

#12 楼

如果您将安全更新设置为自动安装,则这种情况会经常发生。我实际上等待30秒,它解决了这个问题。只是把它扔在那里,以防其他人遇到这个问题。

评论


根据发行版启动的时间长短,可能会长达半小时。但是让发行版在破坏事物之前完成工作可能是理想的。

–earth2jason
19 Mar 23 '19 at 13:58



#13 楼

就我而言,我不得不等待几分钟才能释放该锁(看起来像是apt用来握住它)。这一切都是在系统启动后立即发生的。

#14 楼

sudo rm -f /var/lib/apt/lists/lock,然后再试一次。

apt-fast可能会导致无法正确解锁;有时也会在中止apt-getdpkg时发生这种情况。

#15 楼

我已经多次遇到这个问题。对我来说,它几乎总是由apt-get或某些GUI挂起,由于某种原因而挂起。我不得不将其杀死,这会留下各种锁。

其他答案也提出了非常好的要点,即确保在执行诸如删除锁定文件之类的任何大动作之前,确保当前没有更新正在运行。但是,一旦确定不是这种情况,以下通常对我有用。我是通过阅读许多有关此类问题的答案而得到的。

尽管大多数或全部这些内容都在其他答案中给出,但这却将修补程序归结为一些命令。

sudo fuser -vki /var/lib/dpkg/lock
sudo fuser -vki /var/cache/apt/archives/lock
sudo fuser -vki /var/cache/debconf/config.dat
sudo dpkg --configure -a


用于某种更新的崩溃或终止而未通过其他某种方式完成后用于解锁软件包系统。这些命令应按显示的顺序运行。

评论


至少在Ubuntu 19.10中可能还存在/ var / lib / dpkg / lock-frontend

– jarno
19/12/20在16:20

#16 楼

我在上面的任何地方都没有看到这个答案,但是在Ubuntu 16.04上,我也遇到了这个问题。原因是我的计算机上的时间设定为将来。 (这是因为我使用的是Windows + Ubuntu双启动系统,我想我弄错了本地时间与UTC时间。)

奇怪的是,锁定文件的日期和时间是我运行程序的确切日期和时间。

然后按照前面的帖子中的描述使用“ fuser”,并且可以正常工作,但是我抱怨需要运行dpkg -a -reconfigure。当我这样做时,出现类似以下错误:

newline in field name #padding


在'/ var / lib / dpkg / updates / 0003'之类的文件中。

所有这些都很奇怪,因为我从未见过。因此,我认为这些是症状,因此手动更改了我的数据和时间。我知道登录时的日期/时间有问题,但忽略了它。 (以前,它是通过Internet和NTP自动设置的。)然后,解决了所有上述问题……希望可以对其他人有所帮助!最明显的症状可能是锁定文件的日期/时间是您尝试运行命令的确切日期/时间。

#17 楼

就我而言,当apt-get仍在删除旧内核时,X崩溃了。我使用系统监视器来确认它仍在运行并且没有卡住。该过程完成后,一切都很好。

#18 楼

检查启动器,以查看Software Updater是否正在运行。如果是这样,则将其最大化,然后看看它在做什么。如果仍在检查,请等待其完成。完成后,它可能会告诉您该软件是最新的,因此请关闭该应用程序。如果显示有可用的更新,请执行更新或单击“稍后提醒我”。此应用关闭后,您可以返回使用apt-getapt

如果Software Updater没有运行,只需使用Dash调用它并等待完成,然后决定是否要更新或点击“稍后提醒我”。此应用关闭后,您可以返回使用apt-getapt

#19 楼

sudo killall -9 apt && sudo killall -9 dpkg


使用后果自负

评论


应用killall可能还不错吗?至少该问题与重复的askubuntu.com/questions/1109982/…的答案相同。在我的情况下,它的输出是apt:找不到进程,然后,sudo apt-get ...命令做出不同的反应,说E:dpkg被中断,您必须手动运行sudo dpkg --configure -a来更正问题。这是投票率最高的答案的一部分。

–questionto42
昨天



#20 楼

就我而言,我没有意识到自己已切换到root用户并尝试sudo apt-get,从而得到了相同的消息。一旦意识到这一点,我就可以运行apt-get了,并且可以正常工作。愚蠢的,但是它仍然可以解释某些错误。

评论


这不是问题的起因,因为您可以以root用户身份运行sudo(即使不能,也不会产生此错误消息)。发生的可能性更大,是您在编写下一个命令时另一个进程完成了。

– wjandrea
17-10-24在5:06

有时它确实会产生相同的错误消息。

–卡雷尔
17年12月23日在0:31

#21 楼

以我为例,在:


打开Firefox。
打开终端

我键入了

sudo apt update
sudp apt upgrade

,我明白了问题

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?

我已解决问题,运行在运行sudo apt update后显示给我的命令

apt list --upgradable


此命令将向您显示程序列表就我而言,只有Firefox,我关闭了Firefox,然后可以再次运行该命令而不会出现问题。

sudo apt upgrade


#22 楼

对于有兴趣在脚本中主动阻止此错误的人员,我发现apt upgrade -yq上的-q标志对我造成了此问题。在升级过程中,我猜想它偶尔会向我发出警告(就像在更新桌面时一样,我想继续),如果抑制了这些警告,那么我想可能会导致无法解锁它正在保护的文件并且卡住了。

诚然,我在100%的时间都无法再现此错误,但是消除了-q选项完全为我解决了这个问题。

#23 楼

像其他大多数人一样,我等待锁被移除。 30分钟后,我放弃了工作,并将其硬启动到其他发行版。从那里,我使用互联网进行了一些研究,这些研究使我进入了这里。

事实证明,unattended-upgrades.service正在运行。我发现重新启动进入损坏的系统并运行:

sudo systemctl disable apt-daily.service
sudo systemctl disable unattended-upgrades.service
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer
sudo shutdown -r # Note it will take a couple minutes to reboot


使我可以再次使用破碎的系统:

sudo apt update
sudo apt upgrade
sudo apt install -f


但是它并没有解决apt最初报告的保留包和不可能的情况。似乎这首先导致apt在启动时锁定。

评论


在APT conf中查找无人值守的升级默认值,例如须藤nano /etc/apt/apt.conf.d/50unat-tended-upgrades

– TimD
10月23日13:26

删除以下文件,解决了我的问题。 sudo rm / var / lib / dpkg / lock sudo rm / var / lib / dpkg / lock-frontend sudo rm / var / lib / apt / lists / lock sudo rm / var / cache / apt / archives / lock请参考phoenixnap。 com / kb / fix-not-get-lock-error-ubuntu

– Malar Kandasamy
12月9日在16:39

#24 楼

我已经尝试过此页面上获得最高评价的答案,它们始终无一例外地为我工作,但是我发现了解决此问题的简便方法。首先是一些理论。用户收到此错误消息之前会发生什么?

 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?  
 


/var/lib/dpkg/lock已锁定,因此终端暂时无法使用它,但是它锁定了什么进程?这取决于情况。如果几分钟前启动了计算机,则它可能已被Software Updater应用程序锁定。尝试关闭终端并运行Software Updater应用程序。 Software Updater完成后,它将删除自己的锁,而无需用户在终端中运行任何命令。

另一个可行的解决方案是在启动已启用Ubuntu来宾操作系统的VM中一段时间不活动。通常,Ubuntu来宾操作系统几乎立即开始更新。更新过程经常锁定需要安装,删除或更新软件的命令,直到完成为止。打开软件更新程序,让其完成运行并安装您要安装的所有更新。完成后,软件更新程序将删除其自己的锁。