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向けであることがわかります。saucyやtrustyなどの最近のUbuntuリリースでは、ソースパッケージを取得して再コンパイルするか、Ubuntuバージョン向けのバイナリを探してください。または、raringでまだ入手可能な古い1.49.0ライブラリを取得することもできます(また、古いUbuntuリリースは古いリリース.ubuntu.com) ですが、これにより依存関係の地獄に陥る可能性があるため、Freeling を再コンパイルすることをお勧めします。

答え2

このスレッドによると:Re: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 のトランク バージョンは boost 1.54 で正常にコンパイルされます。

関連情報