我在 ubuntu 16.04 上运行,从 15.10 升级而来(这可能不相关)。由于依赖性问题,我无法安装 libcups2-dev。我在下面概述了问题和故障排除步骤:
我的问题:
以下命令安装 libcups2-dev(用于 dymo 打印机),得到以下响应:
~ % sudo apt-get install libcups2-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:
libcups2-dev : Depends: libcupsimage2-dev (= 2.2.0-2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
故障排除步骤:
“啊,”我说,“我想知道那里举办的是什么活动?”
~ % sudo dpkg --get-selections | grep hold
~ %
什么都没保留,或者该命令不再有效?哦,好吧。我们去寻找吧。如果由于 libcupsimage2-dev 而无法安装 libcups2-dev,那么是什么阻止了 libcupsimage2-dev?
我发现(为简洁起见,输出略有截断):
~ % sudo apt-get install libcupsimage2-dev
The following packages have unmet dependencies:
libcupsimage2-dev : Depends: libtiff-dev
E: Unable to correct problems, you have held broken packages.
然后我沿着这条疑问线索一直往下走。libcupsimage2-dev 依赖于 libtiff-dev,而 libtiff-dev 又依赖于 libjbig-dev,而 libjbig0 又依赖于 libjbig0……在这里我发现了问题:
~ % sudo apt-get install libjbig-dev
The following packages have unmet dependencies:
libjbig-dev : Depends: libjbig0 (= 2.1-3.1) but 2.1-3.1+deb.sury.org~xenial+1 is to be installed
E: Unable to correct problems, you have held broken packages.
真奇怪。libjbig-dev 需要 libjbig0 2.1-3.1,我有,但我的版本有很多... 好吧,我不知道版本号后面那些 +deb.sury.org 胡说八道的东西是什么。但你们知道,对吧?
让我们继续,一会儿。在传统的 apt-get update 和 apt-get upgrade 之后...:
~ % sudo apt-get install libjbig0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libjbig0 is already the newest version (2.1-3.1+deb.sury.org~xenial+1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
总结
libcups2-dev 已停止,因为它的主要依赖项之一 libjbig-dev 需要 libjbig0 2.1-3.1。只有我有该版本的 libjbig0,但它未被识别为正确版本。那么...首先,发生了什么,其次,我该如何纠正它?哦,第三,+deb.sury.org 上的东西到底是什么?
答案1
看起来答案比它需要的更明显。
我认为版本“不匹配”是问题所在,这是正确的。我强制 apt-get 安装 libjbig0 的“其他”2.1-3.1 版本:
~ % sudo apt-get install libjbig0=2.1-3.1
这样做有效,但 apt-get 提示我这是降级。哎呀。无论如何,这解决了依赖性问题,我能够成功安装 libcups2-dev。
不过,如果你们中有谁感到无聊的话,我还是想知道版本号后缀 +deb 的所有内容是什么。