为什么在DynaLoader中安装DBD :: Pg会失败?

时间:2010-01-21 15:33:46

标签: perl postgresql

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.

安装DBD :: Pg perl模块时有没有人有类似的错误?我该怎么做才能解决它?

4 个答案:

答案 0 :(得分:4)

你应该使用perl来解决这些动态链接问题。使用strace program &> out,然后使用grep查看libpq.so.5。我猜您的libpq.so.5位置错误,或DynaLoader配置错误。阅读@dl_library_path上的文档。

你可以看到你的搜索路径是什么(strace也会显示它试图通过检查每个目录找到.so):

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

确保您的libpq.5.so属于其中之一。 strace还将显示内核是否向DynaLoader返回错误,表明它是隐藏真实内容;此外,它肯定会告诉你DynaLoader知道的一切。

答案 1 :(得分:0)

缺少libpq.so.5文件,表明您没有安装Postgresql客户端库。在Ubuntu上,这个文件由libpq5包提供。

答案 2 :(得分:0)

确保PostgreSQL库的路径位于ld.so.conf或ld.so.conf.d中的文件中,然后重新运行“sudo ldconf”(或sudo / sbin / ldconf)。当我在过去遇到这个问题时,这就解决了这个问题。

答案 3 :(得分:0)

我知道很多人已经回答了你的问题,但我想我还要补充一点。 Makefile.PL通过执行pg_config找到postgres库。如果在您的路径上找不到这个,那么您会发现这种错误。有趣的是,它以相同的方式查找标题。尝试从终端运行pg_config,看看输出是什么。如果在您的路径中找不到它,请找到它,添加到您的路径并尝试再次构建DBD::Pg