web-dev-qa-db-fra.com

difficulté à relier boost après la mise à niveau

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.

1
user3747260

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é.

0
user3747260