MySQL2 Ruby gem无法安装10.6版本。

7
我知道这个问题被问过很多次,但我搜索了许多不同的方法,尝试了很多东西,但都没有成功。
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile

make
gcc -I. -I/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/x86_64-darwin10.6.0 -I/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/backward -I/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1 -I. -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/mysql/include  -Os -g -fno-common -fno-strict-aliasing -arch i386 -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe -Wall -funroll-loops  -o client.o -c client.c
In file included from /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby.h:32,
                 from ./mysql2_ext.h:4,
                 from client.c:1:
/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/ruby.h:108: error: size of array ‘ruby_check_sizeof_long’ is negative
/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/ruby.h:112: error: size of array ‘ruby_check_sizeof_voidp’ is negative
In file included from /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/intern.h:29,
                 from /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/ruby.h:1327,
                 from /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby.h:32,
                 from ./mysql2_ext.h:4,
                 from client.c:1:
/Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/include/ruby-1.9.1/ruby/st.h:69: error: size of array ‘st_check_for_sizeof_st_index_t’ is negative
make: *** [client.o] Error 1


Gem files will remain installed in /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6 for inspection.
Results logged to /Users/kishinmanglani/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/ext/mysql2/gem_make.out

你尝试使用什么命令安装它?例如,你提供了 --with-mysql-config 吗? - DanneManne
我尝试过 sudo gem instal mysql2sudo gem install mysql2 -- --with-mysql-dir=/usr/local/mysql - mergesort
2个回答

9

我曾经遇到过完全相同的问题。我通过彻底卸载MySQL,重新安装64位版本,并使用指向MySQL安装的选项安装了mysql2 gem,解决了这些问题。

我按照在petermac.com上找到的一些说明进行操作:

1. 卸载MySQL

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*

edit /etc/hostconfig and remove the line MYSQLCOM=-YES-

sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*

2. 安装 MySQL 64 位版本

3. 安装 mysql2 gem

sudo env ARCHFLAGS="-arch x86_64" gem install mysql2 -- \
  --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
  --with-mysql-include=/usr/local/mysql/include

那至少可以安装宝石 :)

使用最新的10.6 64位二进制文件(安装程序,版本5.5.16-osx10.6-x86_64)为Lion 10.7.1和mysql2 gem版本0.3.7工作。 - beseku
这对我有用...安装很顺利,但是Rails在构建时仍然抱怨。将libmysqlclient.18.dylib从/usr/local/mysql/lib/符号链接到/usr/lib,并在mysql2 gem中也修复了该问题。 - edlftt
需要强调的是,正如原博客文章所示,这是一个干净的10.6安装示例,32位版本已安装但未使用。如果您已经运行了mysql 32位版本一段时间用于其他目的,在大多数情况下这将擦除您的数据库。因此,请先使用mysqldump备份它们,然后将其导入64位版本。 - Mark Fraser
我的问题是我需要前往MySQL网站并下载正确的64位版本。 - Kirk Strobeck
这一切都很顺利,尽管我还不得不删除一个死链接并将其指向重新安装的位置.. sudo rm /opt/local/bin/mysql_config && sudo ln -s /opt/local/lib/mysql5/bin/mysql_config /opt/local/bin/mysql_config - blotto

8
这篇博客文章解决了我遇到的类似或相同的问题。
你需要安装libmysqlclient-dev才能构建mysql2宝石。

1
这个建议对于使用的操作系统OSX不适用,而原帖作者正在使用该操作系统。 - epochwolf
1
完全解决了我在Debian 6 Squeeze上的问题。遇到相同的问题,只需运行apt-get install libmysqlclient-dev,问题就解决了!谢谢。 - tobalsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接