无法锁定管理目录(/ var / lib / dpkg /)是另一个使用它的进程吗?

尝试使用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? 

我怎样才能解决这个问题?

这应该作为最后的手段。 如果你不小心使用它,你最终可能会破坏系统。 在执行此操作之前,请先尝试其他 答案 。

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

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

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

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

之后,再次尝试打开Synaptic。

我看到几乎所有答案都建议删除锁。 我不建议将其作为第一项措施; 也许如果没有其他选择。 在apt进程运行时放置锁定,并在进程完成时将其删除。 如果锁定没有明显的进程运行,这可能意味着进程由于某种原因而卡住了。

如果你试试

 ps aux | grep apt 

至少会捕获包含单词apt进程。 如果您看到apt-get流程或aptitude流程看起来卡住,您可以尝试

 kill processnumber 

如果这不起作用尝试

 kill -9 processnumber 

这应该会终止进程并可能会删除锁定。 杀死aptaptitude进程是无害的,除非它实际上在包安装过程中。 无论如何,如果这个过程陷入困境,你可能没有选择,只能杀死它。

直接杀死dpkg进程(如果存在)不是一个好主意,因为如果dpkg处于活动状态,它可能正在操作包数据库,并且杀死它可能会使包数据库处于不一致状态; 即腐败。

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

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

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

它应该在此之后工作。

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

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

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

重要提示:只能尝试以下作为最后的手段,因为它可能会导致您的系统崩溃。 首先尝试杀死任何正在运行的aptaptitude实例,如Faheem的回答中所述 。

您可以通过删除文件来强制关闭锁定,但不建议在没有先关闭安全锁定程序的情况下进行锁定 ,因为您可能会导致损坏或中断安装(错误)。 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 

最有可能的方法是:

  • 启动Ubuntu
  • 开始一个终端
  • 键入sudo apt-get install whatever

并且命令行aptupdate-manager自动轮询重叠。

所以如果你在几分钟内再试一次就应该修复它。

只有一个程序可以保持锁定。 确保你没有运行能力,突触或熟练。 关闭程序并再次运行它应该工作。你可能有突触打开,或打开运行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 

现在您可以安装任何包。

到目前为止,在不破坏可能的后台运行安装(通过删除锁定文件可能发生)的情况下使其工作的最佳方法是使用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

我没有validation升级后此错误得到修复。 经过validation,我会添加一条新评论

首先,我们应该检查使用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 

然后我们应该检查一下commad正在做什么,我们可以使用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 

然后我删除繁忙的资源:

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

如果您有“Update Manager”并行运行以进行任何更新检查或安装,则会发生这种情况,因为安装过程会放置Lock。 如果您在没有运行“Update Manager”的情况下遇到相同的错误,则必须将其从/var/lib/dgkg/lock删除,这绝对不能手动执行

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

工作良好。 取自: https : //askubuntu.com/a/15469/68707

此错误可能是由Update Manager尝试在后台自动刷新软件包列表引起的,通常是在您登录后立即锁定目录。

在这种情况下,只需等待几秒钟(或更多,如果您的上一次更新很久以前),它就可以完成或启动Update Manager来检查状态。

不要太快移除某些东西,它可能会完全损坏您的系统; 而是等到当前安装或卸载程序完成其任务,之后您将获得访问权限。 如果您认为当前没有安装或卸载任何内容,则只需使用命令sudo reboot

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

只需sudo rm -f /var/lib/apt/lists/lock再试一次。

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

在我的情况下,我只是等了几分钟,锁已经被释放(看起来像aptd用来持有它)。 这一切都发生在系统启动后。

我曾多次遇到过这个问题。 对我来说,它几乎总是由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 16.04上,我也遇到了这个问题。 原因是我的电脑上的时间已经到了未来 。 (这是因为我使用的是Windows + Ubuntu双启动系统,我猜我已经把当地时间与UTC时间混为一谈。)

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

然后,我使用了早期post中描述的“fuser”并且工作正常,但我得到关于需要运行dpkg -a -reconfigure 。 当我这样做时,我得到的错误如下:

 newline in field name #padding 

在’/ var / lib / dpkg / updates / 0003’这样的文件中。

所有这一切都很奇怪,因为我以前从未见过它。 所以,我认为这些都是症状,并且手动改变了我的数据和时间。 我知道登录时的日期/时间有问题,但忽略了它。 (以前,它是通过Internet和NTP自动设置的)。

然后,所有上述问题都得到了修复……希望这有助于其他人! 最值得注意的症状可能是锁定文件的日期/时间是您尝试运行命令的确切日期/时间。

在我的情况下,X崩溃,而apt-get仍在删除旧内核。 我使用系统监视器确认它仍然在运行而没有卡住。 一旦完成,一切都很好。

在我的情况下,我得到了相同的消息,没有意识到我已经切换到root用户,并尝试sudo apt-get。 一旦我意识到这一点,我就跑了apt-get,并且它有效。 傻,但它可能仍然解释一些错误。

在我的情况下,之后:

  1. 打开Firefox。
  2. 打开终端

我打字了

 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 

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

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

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

使用风险由您自己承担