Проблема связывания повышения после обновления
После обновления 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 (постгис-зависимостью), которые были созданы до обновления, когда я все еще использовал более старую версию boost. Этот каталог должен иметь приоритет над правильным каталогом, и поэтому он пытался установить связь со старым бустом.
Я думаю, что это должно быть проблемой только для людей, которые в какой-то момент создали sfcgal из исходного кода и не все очистили.