2011-06-07 203 views
2

我正嘗試用MySQL設置我的RubyOnRails開發環境。我安裝了XAMPP,所以我決定使用XAMPP的MySQL安裝,(因此我安裝了XAMPP開發包)。安裝mysql2 gem時出錯

現在我試圖安裝mysql2寶石,但我得到這個錯誤:

gem install mysql2 --version 0.2.7 -- --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config 
Error loading RubyGems plugin "/Library/Ruby/Gems/1.8/gems/yard-0.6.3/lib/rubygems_plugin.rb": undefined method `overwrite_accessor' for Gem::Specification:Class (NoMethodError) 
Building native extensions. This could take a while... 
ERROR: Error installing mysql2: 
    ERROR: Failed to build gem native extension. 

    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config 
checking for rb_thread_blocking_region()... no 
checking for mysql.h... yes 
checking for errmsg.h... yes 
checking for mysqld_error.h... yes 
creating Makefile 

make 
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c client.c 
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c mysql2_ext.c 
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used 
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used 
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used 
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c result.c 
cc -arch x86_64 -pipe -bundle -undefined dynamic_lookup -o mysql2.bundle client.o mysql2_ext.o result.o -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L. -arch x86_64 -Wl,-rpath,/Applications/XAMPP/xamppfiles/lib -lruby -L/Applications/XAMPP/xamppfiles/lib -I/Applications/XAMPP/xamppfiles/include -mmacosx-version-min=10.4 -L/Applications/XAMPP/xamppfiles/lib/mysql -lmysqlclient_r -lz -lm -lpthread -ldl 
ld: -rpath can only be used when targeting Mac OS X 10.5 or later 
collect2: ld returned 1 exit status 
make: *** [mysql2.bundle] Error 1 


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql2-0.2.7 for inspection. 
Results logged to /Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/ext/mysql2/gem_make.out 

所以我認爲這裏的關鍵點是:

ld: -rpath can only be used when targeting Mac OS X 10.5 or later 

我試圖設置MACOSX_DEPLOYMENT_TARGET = 10.6,但沒有任何變化。

順便說一句,我使用的是Mac OS X 10.6.6,所以錯誤上面並沒有任何意義......

謝謝!

+0

我不能在任何其他實現中說這個問題,但它是JRUBY中的已知問題。見http://jira.codehaus.org/browse/JRUBY-6199 – ffoeg 2011-11-27 15:30:39

回答

2

以下是您可以嘗試的幾種可能性。

  1. 嘗試將--platform=ruby添加到您的命令。我看到人們聲稱它有幫助。然後

    你的命令應該是:

    gem install mysql2 --platform=ruby --version 0.2.7 -- --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config 
    
  2. 確保您正在構建正確的架構。 OSX 10.6.x對於何時使用32位內容以及何時使用64位內容非常模糊,至少就我所知而言。

    您需要嘗試針對32位和64位版本的MySQL進行構建。

    最簡單的方法是從http://dev.mysql.com/downloads/mysql/#downloads下載它們並嘗試針對每一個進行構建。