因安装包依赖问题导致无法安装的解决办法!
在 Ubuntu 中安装软件的时候经常碰到 E: Unable to correct problems, you have held broken packages. 的错误,顾名思义是因为某些软件包冲突导致,幸运的话 sudo apt-get update && sudo apt-get upgrade 可以解决,但这种情况属于可遇不可求,更多的适合这么做不济于事。这样一来如何彻底解决就成了一个问题,经过多次摸索之后,将可行的解决方法记录如下:
以安装 libxml2-dev 时错误为例,安装时提示如下错误:
$ sudo apt-get install libxml2-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libxml2-dev : Depends: libxml2 (= 2.7.8.dfsg-5.1ubuntu4) but 2.7.8.dfsg-5.1ubuntu4.6 is to be installed
解决方法如下:
$sudo apt-get install aptitude
$aptitude why-not libxml2
p shared-mime-info:i386 Provides shared-mime-info
p shared-mime-info:i386 Depends libxml2:i386 (>= 2.7.4)
p libxml2:i386 Breaks libxml2 (!= 2.7.8.dfsg-5.1ubuntu4)
$dpkg -l | grep libxml2
找到已经安装的对应的 libxml2 包
$sudo dpkg --purge --force-all libxml2
删除 libxml2,并删除其他所有依赖包,--force-all 参数很重要
$sudo apt-get -f install
强制安装欠缺的包
$sudo apt-get install libxml2-dev