apt-get upgrade中断导致Could not get lock /var/lib/dpkg/lock

今天在尝试将tomcat日志做定时清理的时候,了解到 crontabs 工具,在安装的过程中报 E: Unable to locate package crontabs (找不到该源文件)的错误,上网寻找解决方案,执行了 apt-get upgrade 方法,执行过程中发现apache挂掉,项目访问不到,立即中断命令,从而引发一系列问题。

首先先了解 apt-get updateapt-get upgrade的区别

update 是更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,这样才能获取到最新的软件包

upgrade 是升级已安装的所有软件包,升级之后的版本就是本地地址里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能更新到最新的

在执行apt-get upgreade中断后发现,再次执行 apt-get install 时会提示
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还在运行,此时的解决方案是:

1、杀掉apt进程

ps -ef | grep apt
kill -9 进程pid

2、删除锁定文件

锁定的文件会阻止 Linux 系统中某些文件或者数据的访问,这个概念也存在于 Windows 或者其他的操作系统中。

一旦你运行了 apt-get 或者 apt 命令,锁定文件将会创建于 /var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中。

这有助于运行中的 apt-get 或者 apt 进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。

首先运行下面的命令来移除 /var/lib/dpkg/ 文件夹下的锁定文件:

sudo rm /var/lib/dpkg/lock

之后像下面这样强制重新配置软件包:

sudo dpkg --configure -a

接下来,更新你的软件包源列表:

sudo apt update

但是由于上面执行apt-get upgrade的后怕,在执行sudo dpkg –configure -a我再次中断了

中断之后apt-get install 报错信息为:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

解决方法为:

删除/var/lib/dpkg/updates/ 下的文件

sudo rm /var/lib/dpkg/updates/*

再执行

sudo apt-get update

猜你喜欢

转载自blog.csdn.net/qq_20492999/article/details/81204045