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