欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

perl操作MongoDB报错undefined symbol: HeUTF8解决方法

程序员文章站 2022-04-29 19:15:44
因为shell操作mongo比较麻烦,只好尝试使用perl操作mongo,perl需要操作mongodb必须先安装相应的驱动,大部分人使用cpan安装,个人觉得太麻烦,使用...

因为shell操作mongo比较麻烦,只好尝试使用perl操作mongo,perl需要操作mongodb必须先安装相应的驱动,大部分人使用cpan安装,个人觉得太麻烦,使用cpanm安装perl模块。


# cpanm mongodb
--> working on mongodb
fetching http://www.cpan.org/authors/id/f/fr/friedo/mongodb-0.702.1.tar.gz ... ok
configuring mongodb-0.702.1 ... ok
building and testing mongodb-0.702.1 ... fail
! installing mongodb failed. see /root/.cpanm/work/1376540233.15152/build.log for details. retry with --force to force install it.

cpanm报错了,使用–force参数


# cpanm mongodb --force
--> working on mongodb
fetching http://www.cpan.org/authors/id/f/fr/friedo/mongodb-0.702.1.tar.gz ... ok
configuring mongodb-0.702.1 ... ok
building and testing mongodb-0.702.1 ... fail
! testing mongodb-0.702.1 failed but installing it anyway.
successfully installed mongodb-0.702.1 (upgraded from 0.702.0)
1 distribution installe

看起来一切完好。测试脚本

脚本内容:


# cat /root/testmongo.pl
#!/usr/bin/perl
use mongodb;
my $connection = mongodb::connection->new( host => 'localhost', port => 27017);

运行:


# perl /root/testmongo.pl
/usr/bin/perl: symbol lookup error: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/mongodb/mongodb.so: undefined symbol: heutf8

google查询“mongodb.so: undefined symbol: heutf8”,只发现一篇相关文章.一群人讨论这个问题。其中一个人的解决方法如下:


# wget http://search.cpan.org/cpan/authors/id/f/fr/friedo/mongodb-0.701.4.tar.gz
# tar -xzvf mongodb-0.701.4.tar.gz
# cd mongodb-0.701.4
添加如下内容到perl_mongo.h:
/* supply heutf8 if it's missing - ppport.h doesn't supply it, unfortunately */
 #ifndef heutf8
 #define heutf8(he) ((heklen(he) == hef_svkey) ? \
 svutf8(hekey_sv(he)) : \
 (u32)hekutf8(he))
 #endif
# perl makefile.pl
# make
# make install

perl脚本运行ok.

实际上是因为不兼容的问题,对于系统rhel5/centos5发行版,mongodb的perl驱动最后的一个版本是v0.45

如下是国外网友的回复:

the latest version to compile, test and install properly on rhel5/centos5 is v0.45 by kristina. (requires any::moose)
https://metacpan.org/release/kristina/mongodb-0.45