Назад | Перейти на главную страницу

Настройка 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 не может взаимодействовать с базой данных. Я буду очень признателен за любую помощь и совет, которые вы могли бы предоставить для успешной настройки моей системы. Заранее спасибо!

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

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