dpkg 不会安装具有较新版本的依赖项的软件包

dpkg 不会安装具有较新版本的依赖项的软件包

请有人向我解释一下,因为这没有意义:

$ dpkg -i freeling-3.1-quantal-x86_64.deb
Selecting previously unselected package freeling.
(Reading database ... 283003 files and directories currently installed.)
Preparing to unpack freeling-3.1-quantal-x86_64.deb ...
Unpacking freeling (3.1) ...
dpkg: dependency problems prevent configuration of freeling:
 freeling depends on libboost-program-options1.49.0 (>= 1.49); however:
  Package libboost-program-options1.49.0 is not installed.
 freeling depends on libboost-regex1.49.0 (>= 1.49); however:
  Package libboost-regex1.49.0 is not installed.
 freeling depends on libboost-system1.49.0 (>= 1.49); however:
  Package libboost-system1.49.0 is not installed.
 freeling depends on libicu48 (>= 4.8.1); however:
  Package libicu48:amd64 is not installed.

但我有liboost 1.54! (所有套餐)

$ apt-cache policy libboost-program-options1.54.0
libboost-program-options1.54.0:
  Installed: 1.54.0-5
  Candidate: 1.54.0-5

$ apt-cache policy libboost-program-options-dev
libboost-program-options-dev:
  Installed: 1.54.0.1
  Candidate: 1.54.0.1

对于所有依赖项依此类推。这个包是否已损坏,或者我是否发现我的设置有问题?据我所理解,

(>= 1.49)

意味着大于或等于 1.49,对吗?

答案1

您需要名为 的包libboost-program-options1.49.0。它可以是大于或等于 1.49 的任何版本,但必须是该包名称。libboost-program-options1.54.0是一个不同的包名称。

有不同的包名称,因为它们具有不兼容的 ABI,因此为 1.49.0 编译的可执行文件无法与 1.54.0 一起使用,反之亦然。由于软件包名称不同,您可以同时安装这两个版本,这样您就可以在同一系统上使用为 1.49.0 编译的程序和为 1.54.0 编译的程序。

软件包名称…-quantal-…表明这是一个针对 Ubuntu 10.10 Quantal 的软件包。在更新的 Ubuntu 版本(例如 saucy 或 trusty)上,您应该获取源代码包并重新编译它,或者找到适用于您的 Ubuntu 版本的二进制文件。或者,您可以尝试获取旧的 1.49.0 库,这些库在 raring 中仍然可用(此外,旧的 Ubuntu 版本存档在旧版本.ubuntu.com),但这可能会让你陷入依赖地狱,所以我建议重新编译 Freeling。

答案2

根据这个标题为:回复:在 Ubuntu 13.10 上安装 Freeling 3.1 - 2014/01/08 16:30看来你需要重新编译它。

摘抄

文件 freeling-3.1-quantal-x86_64.deb 将与 ubuntu Quantal (12.10) 和 Raring (13.04) 一起使用,因为这些版本附带了 libboost-1.49 和 libboost-1.53

Saucy 附带 libboost-1.53​​ 和 1.54,因此,您必须从源代码编译 FreeLing。

3.1的源码包将无法编译,但SVN中的trunk版本使用boost 1.54可以成功编译

相关内容