Кто-нибудь смог установить DBD :: mysql на Mac Snow Leopard с процессором i5? - PullRequest
3 голосов
/ 23 августа 2011

Я пытаюсь установить DBD :: mysql, используя большинство популярных методов, включая sudo cpanm -S DBD::mysql.Однако у меня возникли серьезные проблемы с этим, и я начинаю думать, что это может быть мой процессор.Я успешно установил его на многих компьютерах, но с тех пор, как мой ИТ-отдел дал мне этот i5 MacBook Pro, не повезло.Кто-нибудь еще смог установить DBD :: mysql на i5?Я использую Mac OS 10.6.8.

Вот файл build.log после запуска cpanm.Любая помощь будет оценена.Спасибо!

cpanm (App::cpanminus) 1.4008 on perl 5.010000 built for darwin-thread-multi-2level
Work directory is /Users/jerickson/.cpanm/work/1314049977.98062
You have make /usr/bin/make
You have LWP 5.813
You have /usr/bin/tar: bsdtar 2.6.2 - libarchive 2.6.2
You have /usr/bin/unzip
Searching DBD::mysql on cpanmetadb ...
--> Working on DBD::mysql
Fetching http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.020.tar.gz
-> OK
Unpacking DBD-mysql-4.020.tar.gz
Entering DBD-mysql-4.020
Checking configure dependencies from META.yml
Checking if you have DBI 1.08 ... Yes (1.616)
Configuring DBD-mysql-4.020
Running Makefile.PL


PLEASE NOTE:

For 'make test' to run properly, you must ensure that the 
database user 'root' can connect to your MySQL server 
and has the proper privileges that these tests require such 
as 'drop table', 'create table', 'drop procedure', 'create procedure'
as well as others. 

mysql> grant all privileges on test.* to 'root'@'localhost' identified by 's3kr1t';

You can also optionally set the user to run 'make test' with:

perl Makefile.PL --testuser=username

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  (default     ) = 
  testsocket    (default     ) = 
  testuser      (guessed     ) = root

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

Checking if your kit is complete...
Looks good
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
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.yml ...
Finding PREREQ from Makefile ...
Checking if you have Data::Dumper 0 ... Yes (2.121_14)
Checking if you have DBI 1.08 ... Yes (1.616)
Checking if you have Test::More 0 ... Yes (0.98)
Checking if you have Test::More 0 ... Yes (0.98)
Checking if you have Data::Dumper 0 ... Yes (2.121_14)
Checking if you have DBI 1.08 ... Yes (1.616)
Building and testing DBD-mysql-4.020
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm
gcc-4.2 -c  -I/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include  -Os -g -fno-common -fno-strict-aliasing -arch x86_64 -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -arch x86_64 -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include -Os   -DVERSION=\"4.020\" -DXS_VERSION=\"4.020\"  "-I/System/Library/Perl/5.10.0/darwin-thread-multi-2level/CORE"   dbdimp.c
dbdimp.c: In function ‘alloc_param’:
dbdimp.c:223: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_bind’:
dbdimp.c:241: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbind’:
dbdimp.c:257: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbuffer’:
dbdimp.c:272: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘parse_params’:
dbdimp.c:589: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘my_login’:
dbdimp.c:1996: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3605: warning: assignment from incompatible pointer type
dbdimp.c:3606: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_st_fetch’:
dbdimp.c:3798: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_param’:
dbdimp.c:223: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_bind’:
dbdimp.c:241: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbind’:
dbdimp.c:257: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbuffer’:
dbdimp.c:272: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘parse_params’:
dbdimp.c:589: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘my_login’:
dbdimp.c:1996: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3605: warning: assignment from incompatible pointer type
dbdimp.c:3606: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_st_fetch’:
dbdimp.c:3798: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_param’:
dbdimp.c:223: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_bind’:
dbdimp.c:241: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbind’:
dbdimp.c:257: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘alloc_fbuffer’:
dbdimp.c:272: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘parse_params’:
dbdimp.c:589: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘my_login’:
dbdimp.c:1996: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3605: warning: assignment from incompatible pointer type
dbdimp.c:3606: warning: format not a string literal and no format arguments
dbdimp.c: In function ‘mysql_st_fetch’:
dbdimp.c:3798: warning: format not a string literal and no format arguments
/usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI/Driver.xst > mysql.xsi
/usr/bin/perl /Library/Perl/Updates/5.10.0/ExtUtils/xsubpp  -typemap /System/Library/Perl/5.10.0/ExtUtils/typemap  mysql.xs > mysql.xsc && mv mysql.xsc mysql.c
Warning: duplicate function definition 'do' detected in mysql.xs, line 242
Warning: duplicate function definition 'rows' detected in mysql.xs, line 751
gcc-4.2 -c  -I/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include  -Os -g -fno-common -fno-strict-aliasing -arch x86_64 -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -arch x86_64 -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include -Os   -DVERSION=\"4.020\" -DXS_VERSION=\"4.020\"  "-I/System/Library/Perl/5.10.0/darwin-thread-multi-2level/CORE"   mysql.c
mysql.xs: In function ‘XS_DBD__mysql__db_do’:
mysql.xs:307: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘struct SV *’
mysql.xs:364: warning: format not a string literal and no format arguments
mysql.xs:365: warning: format not a string literal and no format arguments
mysql.xs:366: warning: format not a string literal and no format arguments
mysql.xs:525: warning: format not a string literal and no format arguments
mysql.xs: In function ‘XS_DBD__mysql__GetInfo_dbd_mysql_get_info’:
mysql.xs:930: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘struct SV *’
mysql.xs: In function ‘XS_DBD__mysql__db_do’:
mysql.xs:307: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘struct SV *’
mysql.xs:364: warning: format not a string literal and no format arguments
mysql.xs:365: warning: format not a string literal and no format arguments
mysql.xs:366: warning: format not a string literal and no format arguments
mysql.xs:525: warning: format not a string literal and no format arguments
mysql.xs: In function ‘XS_DBD__mysql__GetInfo_dbd_mysql_get_info’:
mysql.xs:930: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘struct SV *’
mysql.xs: In function ‘XS_DBD__mysql__db_do’:
mysql.xs:307: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘struct SV *’
mysql.xs:364: warning: format not a string literal and no format arguments
mysql.xs:365: warning: format not a string literal and no format arguments
mysql.xs:366: warning: format not a string literal and no format arguments
mysql.xs:525: warning: format not a string literal and no format arguments
mysql.xs: In function ‘XS_DBD__mysql__GetInfo_dbd_mysql_get_info’:
mysql.xs:930: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘struct SV *’
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.bundle
LD_RUN_PATH="/usr/local/mysql/lib:/usr/lib" /usr/bin/perl myld gcc-4.2 -mmacosx-version-min=10.6.3  -arch x86_64 -arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o  -o blib/arch/auto/DBD/mysql/mysql.bundle     \
       -L/usr/local/mysql/lib -lmysqlclient -lpthread   \

chmod 755 blib/arch/auto/DBD/mysql/mysql.bundle
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/DBD::mysql.3pm
Manifying blib/man3/DBD::mysql::INSTALL.3pm
Manifying blib/man3/Bundle::DBD::mysql.3pm
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
Bailout called.  Further testing stopped:  Unable to load DBD::mysql

#   Failed test 'use DBD::mysql;'
#   at t/00base.t line 21.
#     Tried to use 'DBD::mysql'.
#     Error:  Can't load '/Users/jerickson/.cpanm/work/1314049977.98062/DBD-mysql-4.020/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/jerickson/.cpanm/work/1314049977.98062/DBD-mysql-4.020/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Library not loaded: libmysqlclient.18.dylib
#   Referenced from: /Users/jerickson/.cpanm/work/1314049977.98062/DBD-mysql-4.020/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 255
-> FAIL Installing DBD::mysql failed. See /Users/jerickson/.cpanm/build.log for details.

С тех пор я попробовал sudo cpanm -Sf DBD::mysql.Используя флаг force, cpanm сообщает, что он был успешно установлен, однако попытка запустить скрипт, который включает в себя подключение к базе данных MySQL, приводит к следующей ошибке:

Running...
install_driver(mysql) failed: Can't load '/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Perl/5.10.0/darwin-thread-multi-2level/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 6) line 3
Compilation failed in require at (eval 6) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at roster_generate.pl line 33

Ответы [ 4 ]

4 голосов
/ 23 августа 2011

Ах, я смог это исправить, добавив

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

на мой .bash_profile. Я нашел это в каком-то случайном блоге. Кто-нибудь знает, почему это работает ??

2 голосов
/ 15 августа 2013

Я получил следующее для работы над Snow Leopard. Это старый трюк Linux из темных веков, называемый символическими ссылками.

cd / usr / lib sudo ln -sv /usr/local/mysql/lib/*.dylib.

Не связывайтесь с установкой переменной окружения DYLD_LIBRARY_PATH, потому что sudo не будет уважать и выдаст вам жалобное сообщение для загрузки.

Мне удалось (наконец-то) скомпилировать DBD :: mysql и некоторые другие вещи.

Удачи.

1 голос
/ 01 сентября 2014

Для тех, кто использует Mac OSX Mavericks, вот шаги, которые я использовал, чтобы наконец заставить этот модуль работать.

Сначала удалите DBD :: mysql, если он уже установлен.

sudo cpanm -U DBD::mysql

Выполните следующие команды, чтобы связать файлы MySQL lib. Как упоминал jjohn, установка переменной DYLD_LIBRARY_PATH не будет работать.

cd /usr/lib
sudo ln -sv /usr/local/mysql/lib/*.dylib .

Переустановите DBD :: mysql (флаг -n пропускает этап тестирования).

sudo cpanm -n DBD::mysql

Вот и все!

Для удобства я также настроил Perl для работы в 32-битном режиме и перезапустил Apache. Однако я не уверен, что эти шаги необходимы. Вот команды для этого, соответственно:

defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes
sudo apachectl restart
0 голосов
/ 18 октября 2011

Я недавно пытался установить пакет DBD :: mysql самостоятельно на совершенно другую машину с той же ошибкой. Установщику нужны определенные библиотеки из пакета mysql-devel, к сожалению, это вам об этом не говорит. После установки этого пакета mysql-devel с yum установка прошла без проблем.

Я полагаю, установив переменную DYLD_LIBRARY_PATH, программа установки также будет искать в /usr/local/mysql/lib/, чтобы найти нужные библиотеки.

...