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