mysql2 gem无法构建本机扩展

我们的实习生的计算机在安装mysql2 gem时遇到问题。 我们刚刚将他的计算机从OS X 10.6升级到10.8(Mountain Lion)。 我尝试通过自制软件和64位DMG安装程序安装mysql。 我也尝试了对开发工具的符号化(如这里所指出的: 在山狮升级后无法安装一些gem )。 我们安装了Xcode(4.4)并安装了命令行工具。 我们在安装命令行工具后尝试重新启动。

这是来自~/.bashrc PATH声明:

 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 

我已经删除了自制软件安装的mysql以及启动代理。 另外rm -rf gem目录(Users / lmrunner07 / .rvm / gems / ruby​​-1.9.3-p194 / gems / mysql2-0.3.11)

我解决了这个问题:

  1. 安装homebrew ruby <(curl -fsSk https://raw.github.com/mxcl/homebrew/go) (查看他们的网站使用http://mxcl.github.com/homebrew/ )
  2. 遵循这些说明http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion
  3. 用homebrew brew install 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以及我项目的gem(包括mysql2)

注意:当我尝试构建时,我遇到了库问题, Library not loaded: libmysqlclient.18.dylib ,它是通过运行sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib修复的sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib (如果遇到同样的问题,请尝试使用mysql2 gem在OS X 10.6上运行'rails server'时,请参阅库未加载:libmysqlclient.16.dylib错误 。)

你有没有尝试过:

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

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

不幸的是,安装过程非常细分,如果不整体查看您的步骤,很难找出问题所在。

在不了解更多有关安装步骤的情况下,以下是我遵循的一些注意事项,这些注释让我进入了一个稳定的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路径… 正如我发现这样做可以在构建期间提供帮助等等(某些脚本假设……)

在这里,我试图简单地创建一个新的rails应用程序,默认数据库是mysql(通过bundler将mysql2降级)。 从那里 – 我试图用快速脚手架做一个测试应用程序 – 和mysql2 barfed。

从那里我遇到一个错误’Library not loaded:libmysqlclient.16.dylib’,如下所示: stackoverflow awesomeness我把这行添加到我的.profile: export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

MY 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: : /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:

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

我能够通过运行得到它来编译:PATH = / bin:/ usr / bin:/ opt / mysql5_64 / bin gem install mysql2其中mysql5_64我下载了最新的64位版本的mysql并在那里提取。 保留已安装的mysql数据库。

我能够通过内implode rvm和安装Homebrew的ruby来解决这个问题。 然后,安装mysql2 gem就好了。

这不是像我这样的第一个问题,我遇到了rvm。 我不认为我会再次使用它。

我已经成功地在OSX Yosemite上工作了:

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