Настройка 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.

Я не уверен, куда идти дальше, но мой Mac не очень подходит для среды разработки, если Perl не может общаться с базой данных. Я был бы очень признателен за любую помощь и совет, которые вы могли бы дать при успешной настройке моей системы. Заранее спасибо!

2 ответа

Я провел около 4 дней, борясь с этой проблемой, и вот установка, которая наконец-то и добралась до меня:

  • не используйте macports
  • используйте стоковый Perl, с изюминкой:
    • Snow Leopard поставляется с 2- мя перлами: 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

  • загрузите 32-битную версию mysql с dev.mysql.com/downloads/mysql/ ("Mac OS X, версия 10.6 (x86, 32-bit)")
    • Найдите инструкции в Google - я просто поместил извлеченный каталог в /usr/local и связал /usr/local/mysql с этим каталогом
  • CPAN, похоже, предпочитает места установки для 5.10.0, поэтому я скачал DBD::mysql с search.cpan.org и выполнил обычную установку:

% perl Makefile.PL

% make

% sudo make install

ОБНОВИТЬ:

  • Чтобы заставить CPAN получить свою конфигурацию из правильной версии Perl и заставить Apache запускать CGI Perl с правильной версией Perl, используйте следующую команду вместо последней в приведенном выше списке:

% defaults write /Library/Preferences/com.apple.versioner.perl Version 5.8.9

Вы должны быть администратором, чтобы сделать это. После этого, HUP Apache, и все будет готово.

У меня были те же головные боли, что и у Стива Айви, с тем же решением.

Кроме того, поскольку я использую 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 бит, следуя совету Майкла Крамера

Другие вопросы по тегам