Mac OS X 10.6 安装 Apache/MySQL/Perl

Mac OS X 10.6 安装 Apache/MySQL/Perl

我刚买了一台新 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 位,操作如下迈克尔·克莱默的建议

相关内容