错误:无法构buildgem本机扩展(rails 3.2.3上的mysql2)

我试图安装与Rails 3.2.3的MySQL2的gem,它失败了:

★ bundle install Fetching gem metadata from https://rubygems.org/......... Using rake (0.9.2.2) Using i18n (0.6.0) Using multi_json (1.2.0) Using activesupport (3.2.3) Using builder (3.0.0) Using activemodel (3.2.3) Using erubis (2.7.0) Using journey (1.0.3) Using rack (1.4.1) Using rack-cache (1.2) Using rack-test (0.6.1) Using hike (1.2.1) Using tilt (1.3.3) Using sprockets (2.1.2) Using actionpack (3.2.3) Using mime-types (1.18) Using polyglot (0.3.3) Using treetop (1.4.10) Using mail (2.4.4) Using actionmailer (3.2.3) Using arel (3.0.2) Using tzinfo (0.3.32) Using activerecord (3.2.3) Using activeresource (3.2.3) Using bundler (1.1.3) Using coffee-script-source (1.2.0) Using execjs (1.3.0) Using coffee-script (2.2.0) Using rack-ssl (1.3.2) Using json (1.6.6) Using rdoc (3.12) Using thor (0.14.6) Using railties (3.2.3) Using coffee-rails (3.2.2) Using jquery-rails (2.0.2) Installing mysql2 (0.3.11) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb checking for rb_thread_blocking_region()... yes checking for rb_wait_for_single_fd()... yes checking for mysql_query() in -lmysqlclient... no checking for main() in -lm... yes checking for mysql_query() in -lmysqlclient... no checking for main() in -lz... yes checking for mysql_query() in -lmysqlclient... no checking for main() in -lsocket... no checking for mysql_query() in -lmysqlclient... no checking for main() in -lnsl... no checking for mysql_query() in -lmysqlclient... no checking for main() in -lmygcc... no checking for mysql_query() in -lmysqlclient... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby --with-mysql-config --without-mysql-config --with-mysql-dir --without-mysql-dir --with-mysql-include --without-mysql-include=${mysql-dir}/include --with-mysql-lib --without-mysql-lib=${mysql-dir}/lib --with-mysqlclientlib --without-mysqlclientlib --with-mlib --without-mlib --with-mysqlclientlib --without-mysqlclientlib --with-zlib --without-zlib --with-mysqlclientlib --without-mysqlclientlib --with-socketlib --without-socketlib --with-mysqlclientlib --without-mysqlclientlib --with-nsllib --without-nsllib --with-mysqlclientlib --without-mysqlclientlib --with-mygcclib --without-mygcclib --with-mysqlclientlib --without-mysqlclientlib Gem files will remain installed in /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11 for inspection. Results logged to /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11/ext/mysql2/gem_make.out An error occured while installing mysql2 (0.3.11), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling. 

我正在运行软件包安装,这是在我的Gemfile中:

 gem 'mysql2', '~> 0.3.11' 

我目前已经通过MAMP运行MySQL。 我不知道这是不是一个坏主意,我应该运行一个香草MySQl,但似乎我目前的问题是刚刚安装的gem。 我在这里看到了相当多的这些问题在stackoverflow,但都看起来有点不同或有真正复杂的解决scheme。 有什么我失踪? 简单的事情? 有什么愚蠢的东西? 如有必要,我可以提供额外的信息。 我读过一些人使用SQLite进行开发和testing,然后在prod中的MySQL,但这听起来像一个非常可怕的想法。

https://github.com/brianmario/mysql2/issues/8

只是在控制台中复制这个

 sudo apt-get install mysql-client libmysqlclient-dev 

和工作!

我用Mac Homebrew来安装mysql:

 brew install mysql 

然后我用一个gem命令来安装mysql2 gem:

 sudo gem install mysql2 

这主要是由于缺lessmysql头文件,请尝试安装mysql developer(mysql-devel)包

通常这个错误发生在'libmysqlclient-dev'包缺失时

  • 如果你在Linux上试试这个链接
  • 如果你在Windows上,这个url可能会帮助你

我刚刚遇到了同样的问题,使用OS X Sierra和MAMP和Rails 5.我成功安装了Gem通道

 gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config 

之后,捆绑安装工作得很好。

我结束了刚刚安装MySQL的新副本,而不是使用MAMP,并做了伎俩。 还必须确保安装64位版本,而不是32位。

您可以按照这个线程错误安装mysql2 gem通过Bundler解释Centos的解决scheme,这个问题将被修复,如果你调整了你的操作系统的命令,你可以成功地安装mysql2 gem。

只需将MAMP mysql添加到PATH,然后就可以按照常规运行捆绑安装。

$ / Applications / MAMP / Library / bin / mysql –host = localhost -uroot -proot

来源: http : //blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html