web-dev-qa-db-fra.com

Erreur lors du chargement des bibliothèques partagées: libpq.so.5: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

J'essaie d'exécuter pg_dump sur le serveur PostgreSQL 9.0.4 fonctionnant sur Debian et j'obtiens l'erreur ci-dessous:

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 

libpq.so.5 est un lien vers libpq.so.5.3 comme indiqué ci-dessous

lrwxrwxrwx 1 root root     12 Jun 27 16:24 libpq.so.5 -> libpq.so.5.3
-rwxr-xr-x 1 root root 180749 Jun 21 02:43 libpq.so.5.3

Qu'est-ce que je fais mal?

19
McKibet

Essaye ça:

1: Connaître le chemin de libpq.so.5

find / -name libpq.so.5

Exemple de sortie: /usr/pgsql-9.4/lib/libpq.so.5 Si rien n'est trouvé, vérifiez si vous avez déjà installé les librairies postgresql appropriées pour votre version postgresql et votre plate-forme de système d'exploitation

2: Lier symboliquement cette bibliothèque dans un chemin de bibliothèque "bien connu" comme /usr/lib:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5

Attention: Si votre plateforme est en 64 bits, vous DEVEZ également un lien symbolique vers le chemin des bibliothèques 64 bits:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5

3: Soyez heureux!

21
Yahya Yahyaoui

Dans quel répertoire se trouvent ces fichiers libpq? Vous pouvez essayer de définir la variable d'environnement LD_LIBRARY_PATH pour pointer vers ce répertoire ou pour vous assurer qu'il est à la place standard.

Aussi, pourquoi le libpq.so.5 lien affiché dans la section "comme illustré ci-dessous"? Vous devriez peut-être simplement exécuter ldconfig?

J'obtenais le même message d'erreur sur Postgres 9.5 sur RHEL 6.5 qui m'a conduit à ce message. Mais une trouvaille pour le fichier libpq.so.5 n'a rien retourné, ce qui a rendu les choses plus confuses.

Au final, les liens symboliques suivants l'ont fait fonctionner

ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib64/libpq.so.rh-postgresql95-5 
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib/libpq.so.rh-postgresql95-5

Ces chemins sont pour RHEL, utilisez find / -name libpq.so pour localiser votre installation et l'ajouter aux mêmes dossiers de destination /usr/lib/ et /usr/lib64/ en utilisant le nom de fichier d'origine.

La cause première semble que l'installation n'a pas placé ce fichier dans un emplacement partagé.

6
oden