[Ubuntu] E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. 解决办法
问题发生与解决
我是在尝试手动编译安装opencv时,在更新安装软件或程序时遇到了该问题:
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
很明显,bug提示我需要运行sudo dpkg --configure -a
;
接着,我需要依次运行以下命令更新apt-get源:
sudo apt-get update
sudo apt-get upgrade
但很不幸,我在尝试 upgrade 时提示我 dpkg 被其它程序占用balabala一堆提示,按网上的说法要做一些删除文件的行为,三思,因为有惨痛的导致系统图形化界面崩溃的经历,最保险的方法就是重启机器!
显然上述方法并没有帮助我们解决该问题,根据一篇博客的说明,问题在于/var/lib/dpkg/updates文件下的文件有问题,可能是其他软件安装过程或是其他原因导致的,这里删除掉然后重建即可。
接下来我又尝试了如下方法:
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update
sudo apt-get upgrade
另外,如果在执行sudo apt-get upgrade
命令时出现类似下面情况一定要慎重:
Configuration file '/etc/sudoers'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** sudoers (Y/I/N/O/D/Z) [default=N] ?
如果不明白就去百度一下,或者选择默认值N,我猜我之前系统图形化界面崩溃就可能与我选择了Y有关!
到这里还没完,又有提示,大概是dpkg: 处理软件包 xxx (–configure)时出错,按如下方法解决:
sudo su
mv /var/lib/dpkg/info /var/lib/dpkg/info_bak
mkdir /var/lib/dpkg/info
apt-get update && apt-get -f install
mv /var/lib/dpkg/info/* /var/lib/dpkg/info_bak/
rm -rf /var/lib/dpkg/info
mv /var/lib/dpkg/info_bak /var/lib/dpkg/info
至此,总算成功解决了安装软件包失败的问题。下面附上三篇对我解决问题有帮助的文章(实际上有帮助的可能是第二、三篇):
dpkg was interrupted…解决办法
dpkg was interrupted…解决办法
dpkg: 处理软件包 xxx (–configure)时出错解决方法