2011-01-27 4 views
6

Я пытаюсь заставить DBD :: MySQL работать на Snow Leopard (v10.6.6). Версия Perl, поставляемая с ОС по умолчанию, - v5.10.0. Поскольку я читал это 64-битное, я пошел вперед и загрузил и установил 64-разрядную версию MySQL (mysql-5.5.8-osx10.6-x86_64).Ошибка установки для DBD :: MySQL на OSX v10.6.6

Установка и настройка MySQL прошла гладко, here's my config and version number for reference.

Я использовал CPAN для загрузки DBI и драйверов DBD :: MySQL. Я тогда:

  • Установленная DBI
  • настроить Makefile.PL
  • запускали сделать команду из командной строки

Makefile.PL сказал, что будет использовать следующие параметры для компиляция и испытания:

 
I will use the following settings for compiling and testing: 

    cflags  (mysql_config) = -I/usr/local/mysql/include -Os -g -fno-common -fno-strict-aliasing -arch x86_64 
    embedded  (mysql_config) = 
    libs   (mysql_config) = -L/usr/local/mysql/lib -lmysqlclient -lpthread 
    mysql_config (guessed  ) = mysql_config 
    nocatchstderr (default  ) = 0 
    nofoundrows (default  ) = 0 
    ssl   (guessed  ) = 0 
    testdb  (default  ) = test 
    testhost  (default  ) = 
    testpassword (User's choice) = r00t! 
    testsocket (default  ) = 
    testuser  (User's choice) = root 

To change these settings, see 'perl Makefile.PL --help' and 
'perldoc INSTALL'. 

Multiple copies of Driver.xst found in: /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI/ /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/auto/DBI/ at Makefile.PL line 907 
Using DBI 1.616 (for perl 5.010000 on darwin-thread-multi-2level) installed in /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI/ 
Writing Makefile for DBD::mysql 

Все, казалось, все в порядке, пока я не попытался запустить тест делает:

 
t/00base....................NOK 2/6#  Tried to use 'DBD::mysql'.   
#  Error: Can't load '/Users/swm/.cpan/build/DBD-mysql-4.018-Pnd2qz/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/swm/.cpan/build/DBD-mysql-4.018-Pnd2qz/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Library not loaded: libmysqlclient.16.dylib 
# Referenced from: /Users/swm/.cpan/build/DBD-mysql-4.018-Pnd2qz/blib/arch/auto/DBD/mysql/mysql.bundle 
# Reason: image not found at /System/Library/Perl/5.10.0/darwin-thread-multi-2level/DynaLoader.pm line 207. 
# at (eval 7) line 2 
# Compilation failed in require at (eval 7) line 2. 
# BEGIN failed--compilation aborted at (eval 7) line 2. 
FAILED--Further testing stopped: Unable to load DBD::mysql 
make: *** [test_dynamic] Error 9 

Это неудача, потому что не может найти mysql.bundle для DBD. Кто-нибудь сталкивался с этой проблемой? Или можете указать мне в правильном направлении, что делать дальше? Мне нужен DBI/DBD :: MySQL для моей новой работы, и я скремблирую, чтобы найти решение.

Большое спасибо заранее.

ответ

0

Это отчасти, но я настоятельно рекомендую настроить отдельный perl на машине - либо с помощью fink/macports, либо из исходного кода - и оставить систему perl (и ее библиотеки) Mac отдельно.

Как только я сделал это на своем собственном Mac, у меня было очень мало проблем с установкой модулей после этого, и мне не пришлось беспокоиться о случайном прорыве дыры в моей ОС, разбив perl, который использует система.

Если бы это был мой Mac, я бы установил новый perl из исходного кода (исходный дистрибутив Perl достаточно умен, чтобы самому установить его, убедитесь, что он находится на Mac и безопасно устанавливает его в/usr/local/bin) и исходим из того, чтобы установить DBD :: Mysql (и другие необходимые вам модули).

+0

сочетание MacPorts perl5.12 (который также устанавливается в/USR/местные/BIN) и местного :: Lib не будет мешать системе Perl в все и очень легко настроить –

13

Я воспользовался проблемой «Библиотека не загружалась: libmysqlclient.16.dylib», поместив символическую ссылку в/usr/lib/"в /usr/local/mysql-5.5.8-osx10.6-x86_64/ Библиотека/libmysqlclient.16.dylib

1

Я работал примерно такой же или аналогичный вопрос. Каким-то образом я мог бы построить и протестировать DBD :: MySQL с cpan, но когда я попытался использовать его в сценарии он сказал такие вещи, как

dyld: lazy symbol binding failed: Symbol not found: _mysql_init 
    Referenced from: /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle 
    Expected in: flat namespace 

по-видимому, это a 64-bit vs 32-bit issue.

Установка п чернила dbd-mysql-pm5100 package заставляли его работать, хотя это длилось долго. Я также удалил установленную cpan версию:

sudo rm -rf /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql 
sudo rm -rf /Library/Perl/5.10.0/darwin-thread-multi-2level/DBD/mysql 
sudo rm -rf /Library/Perl/5.10.0/darwin-thread-multi-2level/DBD/mysql.pm 
1

также включают в себя.Профиль

export VERSIONER_PERL_PREFER_32_BIT=yes; 

Помимо создания ссылки расстрелов программы с DBI::mysql генерируется сообщение об ошибке, таким образом, в том числе и это переменный на окружающей среде делает его работу

1

Я знаю, что это старый пост. Но я полагаю, что лучшим решением было бы добавить библиотечный каталог в переменную env_FALLBACK_LIBRARY_PATH. (Причина здесь: https://stackoverflow.com/a/3172515/119958)

Там нет LDCONFIG в макинтоше, так что просто добавить путь к этому окр вару и повторно запустить процесс установки для DBD :: MySQL

Donato-Vianas-MacBook-Pro:Invoicer donato$ cpanm DBD::mysql 
--> Working on DBD::mysql 
Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.022.tar.gz ... OK 
Configuring DBD-mysql-4.022 ... OK 
Building and testing DBD-mysql-4.022 ... FAIL 
! Installing DBD::mysql failed. See /Users/donato/.cpanm/build.log for details. 

# Failed test 'use DBD::mysql;' 
# at t/00base.t line 21. 
#  Tried to use 'DBD::mysql'. 
#  Error: Can't load '/Users/donato/.cpanm/work/1359948144.491/DBD-mysql-4.022/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/donato/.cpanm/work/1359948144.491/DBD-mysql-4.022/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Library not loaded: libmysqlclient.18.dylib 

Donato-Vianas-MacBook-Pro:Invoicer donato$ export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_FALLBACK_LIBRARY_PATH 
Donato-Vianas-MacBook-Pro:Invoicer donato$ cpanm DBD::mysql--> Working on DBD::mysql 
Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.022.tar.gz ... OK 
Configuring DBD-mysql-4.022 ... OK 
Building and testing DBD-mysql-4.022 ... OK 
Successfully installed DBD-mysql-4.022 
1 distribution installed 
1

[Давнего Lurker первого раза плакат]

Решение Donato работает для установки, но var также должен присутствовать во время выполнения, или я получаю ту же ошибку. Следующие исправления это во время выполнения для оболочки и _www пользователя:

# For command line use, add following line to ~/.bash_profile: 
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_FALLBACK_LIBRARY_PATH 

# If Apache needs it, add following line to /etc/apache2/httpd.conf: 
# On Lion Server, I put it after <IfDefine MACOSXSERVER>, but shouldn't matter 
SetEnv DYLD_FALLBACK_LIBRARY_PATH /usr/local/mysql/lib/:$DYLD_FALLBACK_LIBRARY_PATH 
Смежные вопросы