MySQL2宝石无法构建本机扩展

7
我们的实习生电脑在安装mysql2 gem时出现了问题。我们刚刚将他的电脑从OS X 10.6升级到了10.8 (Mountain Lion)。我们尝试通过homebrew和64位DMG安装程序安装mysql。我们还尝试了通过符号链接到开发工具进行安装(如此处所指出:Not able to install some gems after mountain lion upgrade)。我们已经安装了Xcode(4.4)和命令行工具。在安装命令行工具后,我们尝试重新启动电脑。
这是他在~/.bashrc中的路径声明:
PATH=/usr/local/bin:$PATH:$HOME/.rvm/bin:/usr/local/mysql/bin # Add RVM to PATH for scripting

符号链接:

Diego-Blantons-MacBook-Pro-3:~ lmrunner07$ sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
Password:

尝试安装 gem:
Diego-Blantons-MacBook-Pro-3:~ lmrunner07$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile

make
compiling client.c
In file included from /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby.h:32,
                 from ./mysql2_ext.h:8,
                 from client.c:1:
/Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:105: error: size of array ‘ruby_check_sizeof_long’ is negative
/Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:109: error: size of array ‘ruby_check_sizeof_voidp’ is negative
In file included from /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/intern.h:34,
                 from /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:1382,
                 from /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby.h:32,
                 from ./mysql2_ext.h:8,
                 from client.c:1:
/Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/st.h:67: error: size of array ‘st_check_for_sizeof_st_index_t’ is negative
client.c: In function ‘rb_raise_mysql2_error’:
client.c:98: warning: ISO C90 forbids mixed declarations and code
client.c: In function ‘rb_mysql_client_socket’:
client.c:590: warning: ISO C90 forbids mixed declarations and code
make: *** [client.o] Error 1


Gem files will remain installed in /Users/lmrunner07/.rvm/gems/ruby-1.9.3-p194/gems/mysql2-0.3.11 for inspection.
Results logged to /Users/lmrunner07/.rvm/gems/ruby-1.9.3-p194/gems/mysql2-0.3.11/ext/mysql2/gem_make.out

我已经删除了通过homebrew安装的mysql,以及启动代理。 同时rm -rf了gem目录(Users/lmrunner07/.rvm/gems/ruby-1.9.3-p194/gems/mysql2-0.3.11)。


你能确认一下你的XCode 4.4版本是重新发布的适用于Lion和Mountain Lion吗? - davidcelis
抱歉,您想让我检查什么? - Tyler DeWitt
当Mountain Lion发布时,他们在应用商店中更新了Xcode 4.4的版本,使其与Lion和Mountain Lion兼容。如果您没有重新安装Xcode,那么很可能您拥有的是只与之前版本的OS X兼容的版本。 - davidcelis
我们在安装了Mountain Lion之后安装了Xcode。 - Tyler DeWitt
我也遇到了相同的问题。最终删除了RVM(清除了~/.rvm目录)并重新安装了RVM。之后问题得到很好地解决了。 - Joshua Pinter
@JoshPinter - 刚刚尝试了一下。运行 rvm implode 命令,然后删除 ~/.rvm 目录。但是还是没有解决问题。不过还是谢谢你的建议。 - Tyler DeWitt
6个回答

5
我通过以下步骤解决了这个问题:
  1. 安装homebrew ruby <(curl -fsSk https://raw.github.com/mxcl/homebrew/go)(请查看他们的网站了解用法 链接
  2. 按照这些说明进行操作 http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion
  3. 使用homebrew重新安装mysql brew install mysql。(我尝试按照这些说明安装mysql http://erictarn.com/post/28269453881/how-i-installed-mysql-rvm-ruby-and-rails-on-mountain,但后来遇到了问题,所以我建议您使用homebrew重新安装mysql。)
  4. 重新安装我的项目所需的rvm、rails和gems(包括mysql2)

注意:当我尝试构建时,出现了一个库问题:Library not loaded: libmysqlclient.18.dylib,通过运行sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib解决了这个问题(如果您遇到相同的问题,请参考在OS X 10.6上使用mysql2 gem运行“rails server”时出现Library not loaded: libmysqlclient.16.dylib错误)。


实习生今天不在,所以我无法尝试这个。如果它有效,我会回来并给予奖励分数。感谢提供的链接。 - Tyler DeWitt
第二步中的链接起了作用。不确定是哪一步起了作用,但还是谢谢! - Tyler DeWitt
没问题。谢谢你的积分。我很高兴它起作用了。我自己解决这个问题花了很多小时。我想分享一下。 - Harro

0

我在OSX Yosemite上成功地实现了这个:

sudo port install mysql56
gem install mysql2 -- --with-mysql-config=/opt/local/lib/mysql56/bin/mysql_config

0

你尝试过了吗:

gem install mysql2 --with-mysql-config=/usr/lib64/mysql/mysql_config

/usr/lib64/mysql/mysql_config 替换为您的 mysql 配置文件的位置。


我认为命令是:gem install mysql2 -- --with-mysql-config=/usr/lib64/mysql/mysql_config(额外的 --)。尽管如此,结果还是一样的。 - Tyler DeWitt

0
我能够通过运行以下命令使其编译成功: PATH=/bin:/usr/bin:/opt/mysql5_64/bin gem install mysql2 其中,mysql5_64是我下载的最新的64位MySQL版本,并将其解压到该位置。这样就不会影响我已经安装好的MySQL数据库。

0

我通过使用implode命令卸载rvm并安装Homebrew的ruby来解决了这个问题。然后,mysql2 gem就可以正常安装了。

这不是我第一次遇到rvm类似的问题。我想我不会再使用它了。


0

不幸的是,安装过程非常分段,如果不全面了解您的步骤,很难确定您的问题所在。

如果不知道更多有关您的安装步骤的信息,以下是我遵循的一些注释,使我能够获得一个稳定的Rails Mountain Lion开发平台(再次道歉,这并不更具体)。

  1. RVM、Ruby的说明:moncefbelyamani.com

    注意:这里肯定有我以前从未采取过的建议,比如通过brew doctor'rvm requirements'来执行的步骤。

    类似于以下的注释:

    • Xcode 4.3+只使用ruby-1.9.3-p125+(如果我编译出现问题,就降级到Xcode 4.1)
    • 使用brew install autoconf automake apple-gcc42
    • 使用brew tap homebrew/dupes
    • 还有其他的...
  2. Rails特定的说明:railsapps.github.com

  3. 对于mysql(跳转到安装的mysql部分:coolestguyplanettech.com

注意:我完成了可选步骤:...为了在不键入完整路径的情况下使用mysql命令,您需要将mysql目录添加到shell路径中...我发现这样做可以在构建过程中有所帮助,一些脚本会假定...

在这里,我尝试使用默认数据库mysql简单地创建一个新的rails应用程序(通过bundler引入mysql2)。从那里开始 - 我尝试用快速脚手架测试应用程序 - 但mysql2出现问题。

然后我遇到了一个错误“Library not loaded: libmysqlclient.16.dylib”,如stackoverflow awesomeness所述,我将以下行添加到我的.profile文件中:export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

我的路径明确包含了Rails和Ruby:/Users/gabriel/.rvm/gems/ruby-1.9.3-p194@rails327/bin:/Users/gabriel/.rvm/gems/ruby-1.9.3-p194@global/bin:/Users/gabriel/.rvm/rubies/ruby-1.9.3-p194/bin:/Users/gabriel/.rvm/bin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/usr/sbin:/opt/X11/bin:

希望这些资源能提供一些额外的帮助。


实习生今天不在,所以我无法尝试这个。如果它起作用了,我会回来并给你点赞。谢谢提供链接。 - Tyler DeWitt

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