升级后 boost 链接出现问题

升级后 boost 链接出现问题

将 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

事实证明,/usr/local/lib我有一些.so与 sfcgal(postgis 依赖项)相关的文件,这些文件是在升级之前构建的,当时我仍在使用旧版本的 boost。此目录必须优先于正确的目录,因此它试图链接到旧的 bo​​ost。

我认为这只对那些在某个时候从源代码构建 sfcgal 但并未清理所有内容的人来说是个问题。

相关内容