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可以成功編譯

相關內容