我刚买了一台新 Mac,几天来一直在尝试为我的 perl 应用程序设置本地开发环境,但没有成功。我很快就一无所获,所以我希望其他成功完成此事的人能提供帮助。
我首先安装了 MAMP,我以为它可以帮我搞定一切,但不幸的是,它没有处理一些重要的 perl 模块。我使用 CPAN 安装了所有必需的模块,但 DBD::mysql 似乎无法通过 CPAN 正确安装。在网上阅读了很多资料后,很多人报告了这个问题,并建议使用 MacPorts 安装模块,我尝试使用以下命令安装,但没有成功:
sudo port install p5-dbd-mysql
在成功安装 DBD::mysql 之后,Apache 在尝试运行我们的任何 Perl 脚本时继续报告以下错误:
[Fri Apr 30 18:51:07 2010] [error] [client 127.0.0.1] install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at (eval 1835) line 3.
[Fri Apr 30 18:51:07 2010] [error] [client 127.0.0.1] Perhaps the DBD::mysql perl module hasn't been fully installed,
[Fri Apr 30 18:51:07 2010] [error] [client 127.0.0.1] or perhaps the capitalisation of 'mysql' isn't right.
[Fri Apr 30 18:51:07 2010] [error] [client 127.0.0.1] Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge.
我不知道接下来该怎么办,但如果 Perl 无法与数据库通信,我的 Mac 就不能算是一个好的开发环境。如果您能为我成功设置系统提供任何帮助和建议,我将不胜感激。提前致谢!
答案1
我花了将近 4 天的时间来解决这个问题,下面是最终帮助我解决的设置:
- 不要使用 macports
- 使用普通的 perl,但需要稍加改动:
- Snow Leopard 附带2perls:5.10.0 和 5.8.9 - 像这样切换到早期版本:
% export VERSIONER_PERL_PREFER_32_BIT=yes
% defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes
% defaults write com.apple.versioner.perl Version 5.8.9
- 从 dev.mysql.com/downloads/mysql/ 下载 32 位版本的 mysql (“Mac OS X ver. 10.6 (x86, 32-bit)”)
- 在 Google 上查找说明 - 我只是将解压的目录放在 /usr/local 中,并将 /usr/local/mysql 链接到该目录
- CPAN 似乎更喜欢 5.10.0 特定的安装位置,因此我从 search.cpan.org 下载了 DBD::mysql 并进行了常规安装:
% perl Makefile.PL
% make
% sudo make install
更新:
- 为了让 CPAN 从正确的 perl 版本获取其配置,并让 Apache 使用正确的 perl 版本运行 perl CGI,请使用以下命令,而不是上面列表中的最后一个命令:
% defaults write /Library/Preferences/com.apple.versioner.perl Version 5.8.9
您必须是管理员才能执行此操作。此后,HUP apache 就一切就绪了。
答案2
我和史蒂夫·艾维经历过同样的头痛,也得到了同样的解决方案。
此外,因为我使用的是 mod_perl2,所以我还必须手动构建 mod_perl——如果您从 CPAN 下载它,然后发出:
$ cd ~/.cpan/build/mod_perl-2.*
$ export ARCHFLAGS="-arch i386 -arch x86_64"
$ export CFLAGS="-arch i386 -arch x86_64"
$ perl Makefile.PL
# (will prompt for where apxs is:
/usr/sbin/apxs
$ make -j8
# make test will fail ... had to modify a file:
$ vi t/response/TestAPI/access2.pm
# around line 117, comment out the line:
AuthGroupFile @DocumentRoot@/api/auth-groups
# (I have no idea *why* this is failing, though)
$ make test
# in my case, it failed a couple of tests ... 5 out of 238
# most were because we're running older versions of
# modules, or the pure-perl varient (you'll see 'PP' in
# the module name, or it complains about (something)XS)
# If you're concerned, see t/logs/error_log
$ sudo make install
...然后强制将 Apache2 降为 32 位,操作如下迈克尔·克莱默的建议