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
_のバージョンがインストールされていないことを発見しました。デフォルトのリポジトリでも利用できません。
/usr/local/lib
いくつかありました.so
ブーストの古いバージョンを使用しているときにアップグレード前にビルドされたsfcgal(postgis依存関係)に関連するファイル。このディレクトリは正しいディレクトリよりも優先されている必要があり、古いブーストにリンクしようとしていました。
これは、ある時点でソースからsfcgalを構築し、すべてをクリーンアップしなかった人にとってのみ問題になると思います。