2009-08-14 47 views
4

首先,我想构建DBD::mysql包。这一直没有成功,因为无论如何造成的结果都无法通过Symbol not found: _is_prefix加载测试。所以我认为cpan可能有点旧了。我知道这是一个随机假设,但cpan确实告诉我要安装最新的Bundle::CPAN如何在编译Perl的DBD :: mysql时修复“Symbol not found:_is_prefix”?

谁在Mac OS X 10.5上成功安装DBD::mysqlBundle::CPAN?你能推荐任何我可以做得不同的事情吗?

This is perl, v5.8.8 built for darwin-thread-multi-2level 
(with 4 registered patches, see perl -V for more detail)
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.36, 
for apple-darwin9.5.0 (i386) using readline 5.1

下面是DBD::mysql日志的输出CPAN的:

 
Writing Makefile for DBD::mysql 
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" dbdimp.c 
/usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI/Driver.xst > mysql.xsi 

Running Mkbootstrap for DBD::mysql() 
chmod 644 mysql.bs 
/usr/bin/perl /System/Library/Perl/5.8.8/ExtUtils/xsubpp -typemap /System/Library/Perl/5.8.8/ExtUtils/typemap mysql.xs > mysql.xsc && mv mysql.xsc mysql.c 
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm 
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm 
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod 
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm 
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs 
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs 
Warning: duplicate function definition 'do' detected in mysql.xs, line 225 
Warning: duplicate function definition 'rows' detected in mysql.xs, line 650 
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" mysql.c 
dbdimp.c: In function 'mysql_describe': 
dbdimp.c:3309: warning: assignment from incompatible pointer type 
dbdimp.c: In function 'mysql_describe': 
dbdimp.c:3309: warning: assignment from incompatible pointer type 
rm -f blib/arch/auto/DBD/mysql/mysql.bundle 
LD_RUN_PATH="/usr/local/mysql/lib" /usr/bin/perl myld cc -mmacosx-version-min=10.5.7 -arch ppc -arch i386 -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle \ 
     -L/usr/local/mysql/lib -lmysqlclient -lz -lm  \ 

chmod 755 blib/arch/auto/DBD/mysql/mysql.bundle 
Manifying blib/man3/DBD::mysql.3pm 
Manifying blib/man3/DBD::mysql::INSTALL.3pm 
Manifying blib/man3/Bundle::DBD::mysql.3pm 
    CAPTTOFU/DBD-mysql-4.012.tar.gz 
    /usr/bin/make -j3 -j3 -- OK 

Running make test 
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t 
t/00base.t .................. 1/6 Bailout called. Further testing stopped: Unable to load DBD::mysql 

# Failed test 'use DBD::mysql;' 
# at t/00base.t line 21. 
#  Tried to use 'DBD::mysql'. 
#  Error: Can't load '/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Symbol not found: _is_prefix 
# Referenced from: /Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle 
# Expected in: dynamic lookup 
# at (eval 7) line 2 
# Compilation failed in require at (eval 7) line 2. 
# BEGIN failed--compilation aborted at (eval 7) line 2. 
FAILED--Further testing stopped: Unable to load DBD::mysql 
make: *** [test_dynamic] Error 255 
    CAPTTOFU/DBD-mysql-4.012.tar.gz 
    /usr/bin/make test -- NOT OK 
//hint// to see the cpan-testers results for installing this module, try: 
    reports CAPTTOFU/DBD-mysql-4.012.tar.gz 
Running make install 
    make test had returned bad status, won't install without force 
Failed during this command: 
CAPTTOFU/DBD-mysql-4.012.tar.gz    : make_test NO 
+0

哪个版本的Perl?它是一个系统Perl吗? – 2009-08-14 20:22:00

+0

/System/Library/Perl/5.8.8/ – dlamblin 2009-11-30 04:40:14

回答

5

好吧,如果你得到这些错误,我现在了解以下内容:

  1. MySQL 5.1 for Mac OS X x86_64不与DBD::mysql(还)不兼容。安装32位x86版本,然后重试。你会成功。我希望perl Makefile.pl只会在横幅上告诉你。
  2. Bundle::CPAN有问题,因为我没有以root身份进行安装。为什么这使得它报告循环引用,而不是安装许可问题,我永远不会明白。

如果此时变成过时的信息,请添加注释。

1

你尝试安装Bundle::DBD::mysql

+0

绝对如此。 DBI安装得很好,但DBD :: mysql没有。 – dlamblin 2009-08-14 21:08:06

+0

有关重新定义函数'do'的消息令我感到困惑。我不认为你可以在C程序中有一个名为'do'的函数。 – 2009-08-14 21:31:23

0

我还没有处理这个问题,但我发现MacPorts清理了我所有的UNIX不兼容问题。在忍受太多的痛苦和痛苦之前,你可能想尝试一下。

+2

MacPorts通过安装它自己的Perl版本来发挥它的魔力。这可能是一个好主意 - 我宁愿不使用Mac的系统Perl进行任何操作 - 但值得澄清MacPorts的帮助。 – Telemachus 2009-08-15 17:37:50

+0

我个人认为这对联合国国际法庭发布的权证的规模来说是巨大的矫枉过正。 – dlamblin 2009-08-17 03:19:40

0

它在哪里抱怨循环依赖?它看起来像你试图链接到一个不兼容的版本的MySQL库。它正在查找的符号不在您加载的库中。我不认为这是由CPAN.pm或cpan脚本引起的问题。

一些问题:

  • 谁编的Perl?这是苹果的Perl吗?
  • 谁编译mysql?这是你自己的版本,因为它在/ usr/local?
  • 您以前编译过其他版本吗?我从编译开始,确保一切都指向正确的位置。
+0

是的我明白,该示例不显示循环依赖。这是因为它是我展示的dbd :: mysql部分。我用循环引用关闭了终端。现在我修好了,我无法重现它。如果人们不改变我的头衔,你会发现它是“apple's”perl和mysql的mysql pkg。 (股票)。我想尽可能少地编译。 – dlamblin 2009-08-17 03:12:30

+0

你的标题没有提到过苹果的perl。既然你不能重现循环依赖的东西,你应该从你的问题中删除它。 – 2009-08-17 22:53:46

2

安装可从其开发人员网站获得的(测试版)5.4.1 64位版本的mysql可以解决此问题。经过雪豹测试。

+0

我只是尝试了10.6(确实没有10.6 pkgs)的确切的一些版本4.5.1-beta-osx10.5-x86_64,安装和运行良好,但sudo perl -MCPAN -e'shell'不会安装Bundle: :DBD :: mysql的。 测试汇总报告 ------------------- ... 此命令执行失败: CAPTTOFU/DBD-mysql-4.012.tar.gz:make_test NO – dlamblin 2009-09-06 09:14:02

+0

我并不孤单,perlmonks.org上的某个人也有同样的问题http://www.perlmonks.org/?node_id=793727 – dlamblin 2009-09-06 09:16:58

+0

最后让它建立并运行,并至少用5.4.1 64位模块加载模块版本为10.6上的10.5。测试仍然不能运行,因为它似乎坚持要连接到测试数据库。即使加载它,也没有通过符号错误。结束强制安装它,事情正在美好地工作。 – mikegrb 2009-09-14 02:08:02

0

在我的电脑上安装最新的beta版64bit版本的Mysql固定问题。

+0

请使用版本号或版本号识别“最新版本”。目前网站上有3个最新版本,一个是测试版,一个是推荐的版本,另一个版本是旧版本,但兼容版本(旧版本)。 – dlamblin 2009-09-20 03:18:30

相关问题