Ошибка установки для DBD :: MySQL на OSX v10.6.6 - PullRequest
7 голосов
/ 27 января 2011

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

Установка и настройка MySQL прошла гладко, вот мой конфиг и номер версии для справки .

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

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

Makefile.PL сказал, что будет использовать следующие настройки для компиляции и тестирования: </p> <pre> 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 </pre> <p>

Казалось, что все идет хорошо, пока я не попытался запустить make test : </p> <pre> 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 </pre> <p>

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

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

Ответы [ 6 ]

14 голосов
/ 11 февраля 2011

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

1 голос
/ 15 мая 2013

Решение Donato работает для установки, но переменная также должна присутствовать во время выполнения, или я получаю ту же ошибку. Следующее исправляет это во время выполнения для оболочки и пользователя _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
1 голос
/ 04 февраля 2013

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

В Mac нет ldconfig, поэтому просто добавьте путь к этому env var и перезапустите процесс установки для 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 голос
/ 13 марта 2012

также включает в себя .profile

export VERSIONER_PERL_PREFER_32_BIT=yes; 

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

1 голос
/ 18 марта 2011

Я работал над тем же или похожим вопросом.Каким-то образом я мог собрать и протестировать 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

По-видимому, это 64-битный против 32-проблема с битами.

Установка пакета fink dbd-mysql-pm5100 сделала его работоспособным, хотя это заняло много времени.Я также удалил версию, установленную 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 
0 голосов
/ 29 января 2011

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

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

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

...