Après avoir mis à jour Ubuntu de 16.04 à 16.10, j'ai commencé à recevoir cette erreur chaque fois que j'essayais de faire quelque chose en rapport avec 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
Je n'ai pas libboost_thread.so.1.58.0
mais j'ai libboost_thread.so.1.61.0
situé à /usr/lib/x86_64-linux-gnu/
. Je pensais que peut-être laisser tomber l'extension et réinstaller Postgis ferait l'affaire, mais cela ne semblait rien changer. Maintenant, quand j'essaie CREATE EXTENSION postgis;
je reçois la même erreur.
Sortie pour 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
Et 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
J'ai essayé d'utiliser LD_PRELOAD
et les versions correctes sont apparues dans ldd
, mais il a quand même demandé à utiliser 1.58.0
à l'exécution. Je n'ai trouvé aucune version de 1.58.0
installée sur la machine. Elle n'est même pas disponible dans le référentiel par défaut.
Il s'avère que dans /usr/local/lib
j'avais des fichiers .so
liés à sfcgal (une dépendance postgis) qui avaient été créés avant la mise à niveau alors que j'utilisais encore l'ancienne version de boost. Ce répertoire doit avoir préséance sur le bon répertoire et il essayait donc de se lier à l'ancien boost.
Je pense que cela ne devrait être un problème que pour les personnes qui ont construit sfcgal à la source à un moment donné et qui n'ont pas tout nettoyé.