安装libcups2-dev时的依赖问题

dam*_*and 4 package-management apt dpkg dependencies

我在 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.
Run Code Online (Sandbox Code Playgroud)

故障排除步骤:

“啊,”我说,“我想知道这里有什么?”

~ % sudo dpkg --get-selections | grep hold
~ %
Run Code Online (Sandbox Code Playgroud)

什么都没有举行,或者该命令不再有效?那好吧。我们去打猎吧。如果由于 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.
Run Code Online (Sandbox Code Playgroud)

然后我一直沿着这条提问的路线走下去。libcupsimage2-dev 依赖于 libtiff-dev,后者依赖于 libjbig-dev,而后者依赖于 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.
Run Code Online (Sandbox Code Playgroud)

真好奇。libjbig-dev 需要 libjbig0 2.1-3.1,我有,但我的版本有一堆……好吧,我不知道版本号后面的所有 +deb.sury.org goobery 东西是什么。但你们这样做,对吧?

让我们继续,一会儿。在传统的 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.
Run Code Online (Sandbox Code Playgroud)

tl;博士

libcups2-dev 被停止,因为它的大依赖之一,libjbig-dev 需要 libjbig0 2.1-3.1。只有我有那个版本的 libjbig0,但它没有被识别为正确的版本。所以......首先,发生了什么,其次,我该如何纠正它?哦,第三,什么是 +deb.sury.org 的东西?

dam*_*and 8

看起来答案比它需要的更明显。

我认为版本“不匹配”是问题所在是正确的。我强迫 apt-get 安装 libjbig0 的“其他”2.1-3.1 版本:

~ % sudo apt-get install libjbig0=2.1-3.1
Run Code Online (Sandbox Code Playgroud)

哪个有效,但 apt-get 提示我这是降级。好。无论哪种方式,这都解决了依赖性问题,并且我能够成功安装 libcups2-dev。

如果你们中的任何人感到无聊,我仍然很想知道作为版本号后缀的所有 +deb 内容是什么。