2013-10-24 4 views
7

После обновления до OSX Mavericks я не могу запустить DBI/DBD.Проблемы с Perl DBI/DBD на OSX 10.9 Mavericks

Perl и MySQL работают нормально (я могу войти в mysql и получить доступ к моим таблицам), но мои скрипты Perl больше не могут использовать DBI, поскольку обновитель удалил все мои ранее работающие модули Perl.

Я переустановил DBI и DBD :: mysql, используя CPAN, который установил их в /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/. После копирования модулей (DBI, DBD и все в «авто») в /Library/Perl/5.16/darwin-multi-2level/ (поскольку каталог, используемый cpan, не находится в @INC), мои сценарии возвращают внутреннюю ошибку сервера (даже с FatalsToBrowser).

Журнал ошибок Apache говорит:

dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr 
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle 
Expected in: flat namespace 

dyld: Symbol not found: _Perl_Istack_sp_ptr 
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle 
Expected in: flat namespace 
Premature end of script headers: test.pl 

Что здесь проблема? Может, потому, что я скопировал файлы? Может быть, я должен заставить CPAN напрямую установить на /Library/Perl/5.16/? Как я могу сказать CPAN сделать это?

Любые идеи?

+0

Я просто попытался удалить и переустановить DBI/DBD и добавил использования Lib «/opt/local/lib/perl5/site_perl/5.12.4/darwin- multi-2level "в мой скрипт, но это не исправляет его ... – marluxor

+0

Пожалуйста, воздержитесь от ответа на ваши квесты в вопросе, вместо этого разместите его как ответ. Я отправил ваш ответ в качестве сообщества-вики для вас. – hichris123

ответ

10

Я не обновил Mavericks, потому что Apple не заботится о модификациях, которые делают Apache, PHP или Perl при обновлении ОС - они просто удаляют их все. Я не знаю, если следующий список будет хорошо работать для вас, но он работал на меня с Lion и Mountain Lion:

  • Вы должны MySQL x86 64-бит правильно установлен и настроен перед началом работы.
  • Установите XCode из магазина приложений.
  • В XCode откройте меню Настройки/Загрузки, а затем установите команду Command Line Tools.

Установить DBI:

  • Установите cpanm с этой командой: sudo cpan App::cpanminus.
  • Установка DBI: sudo cpanm DBI.

Установите DBD :: MySQL:

  • Получите необходимые файлы из CPAN. Откройте терминал CPAN: sudo perl -MCPAN -e 'shell'. Затем выполните следующие команды: get DBD::mysql и exit.
  • Перед сборкой необходимо создать какой-то псевдоним, потому что MySQL на Mac установлен иначе, чем на Linux - по крайней мере, это верно и в предыдущих версиях OS X:

кд/USR/местные

Судо MkDir Lib

кд Lib

Судо пер -s /usr/local/mysql/lib/*.dylib.

  • Наконец, необходимо установить и собрать библиотеку:

кд ~/.cpan/сборки/DBD */

Судо Perl Makefile.PL --testuser = 'yourmysqluser' --testpassword = 'yourmysqlpassword'

Sudo сделать

Судо делают тест

Sudo сделать установку

В cd ~/.cpan/build/DBD*/, по *, я имею в виду, что вы должны написать фактический путь, который идет на файлы, которые вы только что скачали из CPAN. Название каталога изменяется в зависимости от последней версии, но его легко найти с помощью простого ls.

Надеюсь, это сработает для вас.


EDIT

Это был сборник я сделал через несколько неудачных попыток, но я думаю, что я должен назвать свои источники:

http://bixsolutions.net/forum/thread-8.html

http://coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion

Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in

+0

Спасибо за ваши отзывы, это была совершенно другая проблема (смешанные версии Perl), проверьте мои изменения выше для деталей. – marluxor

+0

Спасибо, вот и все. Но, я только сделал символические ссылки, а затем продолжил с cpan. – smartmeta

+0

Разве эта строка отсутствует: 'sudo ln -s/usr/local/mysql/lib/*. Dylib'? Разве не должно быть второго пути? –

2

Информация с 5.12 и 5.16 находится на месте. Чтобы исправить, обновить CPAN и переустановите модули:

sudo cpan 
install CPAN 
reload cpan 
install <module> 
0

Я имел существующую конфигурацию MySQL, когда я повышен до OS X 10.9, с помощью пользовательского порта (я использую Boxen). Самый легкий путь для меня, который работал безупречно, был source installation.

# extract the archive, etc.  
perl Makefile.PL --testuser=myuser --testpassword=pass --testport=13306 
make 
make test 
# if all went well with the test 
make install 
0

Я столкнулся с этой проблемой также и с Mavericks OS.Решение, которое работало для меня была смесь некоторых вещей, которые я видел в сети:

  1. Установить последнюю версию Command Line Tools (яблоко веб-разработчиков сайта):
    $sudo perl -MCPAN -e shell

  2. Переустановите с cpan DBI и DBD: модули mysql. Я столкнулся с проблемой здесь, когда липо разбился.

  3. Работа с последней версией CommandLineTools липо:
    $sudo mv /usr/bin/lipo /usr/bin/lipo.orig
    $sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin

  4. Наконец переустанавливать DBI, DBD: MySQL модули с использованием CPAN установки DBI, CPAN установить DBD :: MySQL

0

Mavericks устанавливает Perl 5.16, хотя он не удаляет предыдущие двоичные файлы 5.12. Кроме того, я установил другое программное обеспечение, в котором хранилась еще одна копия Perl 5.12 под /opt/local/bin (я думаю, что это был MacPorts, я, вероятно, использовал его для установки cpan), и этот каталог был указан в моем профиле bash.

Это означает, что CPAN использовал 5.12 для компиляции двоичных файлов, в то время как Apache использовал 5.16, поэтому некоторые вещи работали в терминале, в то время как веб-скрипты разбились.

Удаление /opt/local/bin из $PATH и переустановка DBI и DBD вручную, наконец, устранила проблему.

0

Для меня кончались полностью удалить MySql и установить более старую 32-битную версию, а не как описано в этой StackOverflow странице: MySQL pid ended (cannot start mysql)

Тогда вам нужно получить Perl для запуска режима бита в-32 только путем ввода следующее в терминале (кредит Симону на AskDifferent):

defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes 
Смежные вопросы