4

首先,我想构建DBD::mysql包。这一直失败,因为无论什么 make 导致无法加载用于带有Symbol not found: _is_prefix. 所以我认为 cpan 可能有点老了。我知道这是一个随机假设,但 cpan 确实告诉我安装最新的Bundle::CPAN

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

这是为 darwin-thread-multi-2level 构建的 perl v5.8.8
(有 4 个已注册的补丁,请参阅 perl -V 了解更多详细信息)
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.36,
对于使用 readline 5.1 的 apple-darwin9.5.0 (i386)

这是DBD::mysql的 CPAN 输出日志:

为 DBD::mysql 编写 Makefile
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/系统/库/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

为 DBD::mysql () 运行 Mkbootstrap
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
警告:在 mysql.xs 第 225 行中检测到重复的函数定义“do”
警告:在 mysql.xs 第 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/系统/库/Perl/5.8.8/darwin-thread-multi-2level/CORE" mysql.c
dbdimp.c:在函数“mysql_describe”中:
dbdimp.c:3309:警告:来自不兼容指针类型的赋值
dbdimp.c:在函数“mysql_describe”中:
dbdimp.c:3309:警告:来自不兼容指针类型的赋值
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
操纵 blib/man3/DBD::mysql.3pm
操纵 blib/man3/DBD::mysql::INSTALL.3pm
处理 blib/man3/Bundle::DBD::mysql.3pm
  CAPTTOFU/DBD-mysql-4.012.tar.gz
  /usr/bin/make -j3 -j3 -- 好的

运行 make 测试
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 救助计划被调用。进一步测试停止:无法加载 DBD::mysql

# 失败的测试'使用 DBD::mysql;'
# 在 t/00base.t 第 21 行。
# 尝试使用'DBD::mysql'。
# 错误:无法为模块 DBD::mysql:dlopen(/用户/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle,2):找不到符号:_is_prefix
# 引用自:/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle
# 预期在:动态查找
# 在 (eval 7) 第 2 行
# 在 (eval 7) 第 2 行的 require 中编译失败。
# BEGIN failed -- 编译在 (eval 7) 第 2 行中止。
失败--进一步测试停止:无法加载 DBD::mysql
制作:*** [test_dynamic] 错误 255
  CAPTTOFU/DBD-mysql-4.012.tar.gz
  /usr/bin/make test -- 不行
//提示// 要查看安装此模块的 cpan-testers 结果,请尝试:
  报告 CAPTTOFU/DBD-mysql-4.012.tar.gz
运行 make install
  make test 已返回错误状态,不强制安装
在此命令期间失败:
 CAPTTOFU/DBD-mysql-4.012.tar.gz:make_test NO
4

6 回答 6

5

好的,如果您收到这些错误,我现在知道以下内容:

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

如果以及何时成为过时的信息,请添加评论。

于 2009-08-14T21:07:19.733 回答
2

安装(测试版)5.4.1 64 位版本的 mysql(可从他们的开发者网站获得)解决了这个问题。在雪豹上测试。

于 2009-09-04T11:01:42.990 回答
1

您是否尝试安装Bundle::DBD::mysql

于 2009-08-14T21:06:25.790 回答
0

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

一些问题:

  • 谁编译了perl?这是苹果的perl吗?
  • 谁编译了mysql?这是您自己的版本,因为它在 /usr/local 中?
  • 你以前编译过其他版本吗?我从编译开始,以确保所有内容都指向正确的位置。
于 2009-08-15T17:39:31.270 回答
0

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

于 2009-08-15T05:30:21.670 回答
0

在我的电脑上安装最新的 beta 64 位版本的 Mysql 修复了问题。

于 2009-09-19T13:32:48.967 回答