2010-01-21 5 views
2
Error: Can't load '/home/oracle/.cpan/build/DBD-Pg-2.16.1/blib/arch/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.5: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230. 

Quelqu'un at-il une erreur similaire tout instaling DBD :: Pg module Perl? Que puis-je faire pour le réparer ?Pourquoi l'installation de DBD :: Pg échoue-t-elle dans DynaLoader?

+1

Semble que vous n'avez pas installé Postgres ou DBD :: Pg ne trouve pas la bibliothèque. btw ... Pourriez-vous changer l'étiquette à "postgresql" – draegtun

+0

J'ai postgre installé je me suis connecté à la base de données .. J'ai mis les variables globales HOME, LIB et un autre je ne peux pas rappeler le nom .. en ce moment –

Répondre

4

Vous devriez passer sous perl pour résoudre ces problèmes de liaison dynamique. Utilisez strace program &> out, puis grep pour libpq.so.5. Ma conjecture est votre libpq.so.5 est au mauvais endroit, ou votre DynaLoader est mal configuré. Lire les documents sur @dl_library_path.

Vous pouvez voir ce que votre chemin de recherche est avec ce (le strace aussi montrer en essayant de trouver le .donc en vérifiant chaque répertoire):

perl -MDynaLoader -le'print for @DynaLoader::dl_library_path;' 

Assurez-vous que votre libpq.5.so tombe dans l'une de celles-ci. Le strace montrera également si le noyau retourne une erreur à DynaLoader qu'il est en train de dissimuler; de plus, il vous dira certainement tout ce que DynaLoader sait.

0

Le fichier libpq.so.5 est manquant, ce qui indique que vous ne disposez pas de la bibliothèque cliente Postgresql installé. Sur Ubuntu, ce fichier est fourni par le paquet libpq5.

+0

Je l'ai installé Je peux localiser manuellement libpq.so et toutes les autorisations sont correctes –

0

Assurez-vous que le chemin de la bibliothèque PostgreSQL est dans ld.so.conf ou dans un fichier dans ld.so.conf.d et relancez «sudo ldconf» (ou sudo/sbin/ldconf). Cela a pris soin de ce problème quand je l'ai rencontré dans le passé.

0

Je sais que beaucoup de personnes ont répondu à votre question, mais je pensais que je voudrais ajouter une chose. Makefile.PL localise les bibliothèques postgres en exécutant pg_config. Si cela ne peut pas être trouvé sur votre chemin, alors vous trouverez ce genre d'erreur. Fait intéressant cependant, il recherche les en-têtes de la même manière. Essayez d'exécuter pg_config à partir de votre terminal et de voir ce que la sortie est. Si ce n'est pas trouvé dans votre chemin, localisez-le, ajoutez à votre chemin et essayez de construire DBD::Pg nouveau

Questions connexes