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)
我解决了这个问题:
- 安装homebrew
ruby <(curl -fsSk https://raw.github.com/mxcl/homebrew/go)
(查看他们的网站使用http://mxcl.github.com/homebrew/ ) - 遵循这些说明http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion
- 用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。) - 重新安装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开发盒(再次,道歉,这不是更具体)。
-
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
- 和别的…
-
Rails特定说明: railsapps.github.com
- 对于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