0

デフォルトでは、2 つの異なるバージョンのライブラリが OS にインストールされている場合、プログラムは常にそのライブラリの新しいバージョンを使用します。すべてのアプリがデフォルトで古いバージョンのライブラリを使用するようにシステムを構成するにはどうすればよいですか? おそらくlddorを使用する必要がありますldconfigが、それを達成する方法がわかりません。

以下に詳細をいくつか示します。私は Xubuntu Precise を使用していますが、次の難問に遭遇しました。

  • Xubuntu Precise 出荷libpoppler v0.18.4[1] とすべての Precise アプリ (Evince、Inkscape など) は、このバージョンのライブラリに対してビルドされています。
  • を必要とする ViewPDF [2] をビルドしてインストールしたいlibpoppler >= v0.20
  • 上記の理由でlibpoppler v0.20.4、Ubuntu Quantal [3] からバックポートしました。

私のシステムで現在利用可能なライブラリは次のとおりです。

liv@liv-laptop:~$ locate libpoppler. | grep -i /usr/lib/
/usr/lib/x86_64-linux-gnu/libpoppler.a
/usr/lib/x86_64-linux-gnu/libpoppler.so
/usr/lib/x86_64-linux-gnu/libpoppler.so.19
/usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
/usr/lib/x86_64-linux-gnu/libpoppler.so.28
/usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0

liv@liv-laptop:~$ ls -lh /usr/lib/x86_64-linux-gnu/libpoppler.*
-rw-r--r-- 1 root root 3.8M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.a
lrwxrwxrwx 1 root root   20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so -> libpoppler.so.28.0.0
lrwxrwxrwx 1 root root   20 Sep  4 12:35 /usr/lib/x86_64-linux-gnu/libpoppler.so.19 -> libpoppler.so.19.0.0
-rw-r--r-- 1 root root 2.0M Mar  1  2012 /usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
lrwxrwxrwx 1 root root   20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so.28 -> libpoppler.so.28.0.0
-rw-r--r-- 1 root root 2.4M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0

ViewPDF をビルドして実行すると、問題なく動作します。ただし、大きな問題は、最初に構築されたアプリ (xpdf、inkscape) の一部0.18.4が壊れていることです。

libpoppler.so.19.0.0そこで私の質問です。すべてのアプリがデフォルトで古いバージョンの poppler ライブラリ ( )を使用するようにシステムを構成するにはどうすればよいですか? libpoppler.so.28.0.0最新バージョンを使用するために、新しいバージョン ( ) に対して特別に構築されたアプリのみですか? おそらく、ldd または ldconfig を使用する必要がありますが、それを実現する方法がわかりません。

  1. http://packages.ubuntu.com/precise/libpoppler19
  2. http://www.qtrac.eu/viewpdf.html
  3. http://packages.ubuntu.com/quantal/libpoppler28
4

1 に答える 1

1

/usr/localのデフォルトのプレフィックスに従って、ソースからビルドするすべてのものを にインストールしますconfigure

更新:このパッケージをさらに配布する予定がある場合は、別のアプローチが必要です。say という名前のディレクトリを作成し、そこに/usr/lib/future高度なバージョンを配置しlibpoppler.soます。-rpath=/usr/lib/futureアプリケーションは、おそらく とを使用して、それに対してリンクします-rpath-link=/usr/lib/future

于 2012-10-29T18:02:08.733 に答える