web-dev-qa-db-ja.com

アップグレード後のブーストのリンクに関する問題

Ubuntuを16.04から16.10にアップグレードした後、postgisに関連することをしようとすると、このエラーが表示され始めました。

_could not load library "/usr/lib/postgresql/9.5/lib/postgis-2.2.so": libboost_thread.so.1.58.0: cannot open shared object file: No such file or directory_

_libboost_thread.so.1.58.0_はありませんが、_libboost_thread.so.1.61.0_は_/usr/lib/x86_64-linux-gnu/_にあります。拡張機能を削除してpostgisを再インストールするとうまくいくと思いましたが、何も変わらないようです。これで、_CREATE EXTENSION postgis;_を試しても同じエラーが発生します。

_ldd /usr/lib/postgresql/9.5/lib/postgis-2.2.so | grep libboost_の出力:

_libboost_thread.so.1.58.0 => not found
libboost_system.so.1.58.0 => not found
libboost_serialization.so.1.58.0 => not found
_

そしてldconfig -p | grep -E "libboost_(thread|system|serialization)"

_libboost_thread.so.1.61.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.61.0
libboost_thread.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_thread.so
libboost_system.so.1.61.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.61.0
libboost_system.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_system.so
libboost_serialization.so.1.61.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.61.0
libboost_serialization.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_serialization.so
_

_LD_PRELOAD_を使用してみましたが、正しいバージョンがlddに表示されましたが、実行時に引き続き_1.58.0_が要求されました。マシンに_1.58.0_のバージョンがインストールされていないことを発見しました。デフォルトのリポジトリでも利用できません。

1
user3747260

/usr/local/libいくつかありました.soブーストの古いバージョンを使用しているときにアップグレード前にビルドされたsfcgal(postgis依存関係)に関連するファイル。このディレクトリは正しいディレクトリよりも優先されている必要があり、古いブーストにリンクしようとしていました。

これは、ある時点でソースからsfcgalを構築し、すべてをクリーンアップしなかった人にとってのみ問題になると思います。

0
user3747260