错误:无法构建 gem 本机扩展(rails 3.2.3 上的 mysql2)
Posted
技术标签:
【中文标题】错误:无法构建 gem 本机扩展(rails 3.2.3 上的 mysql2)【英文标题】:ERROR: Failed to build gem native extension (mysql2 on rails 3.2.3) 【发布时间】:2012-04-20 12:59:53 【问题描述】:我正在尝试使用 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。我在 *** 上看到了很多这样的问题,但似乎都有点不同或有非常复杂的解决方案。有什么我想念的吗?简单的东西?有什么愚蠢的吗?如有必要,我可以从输出文件中提供其他信息。我读到有些人使用 SQLite 进行开发和测试,然后在产品中测试 MySQL,但这听起来是一个非常可怕的想法。
【问题讨论】:
我有一个 mysql_config 命令可用,但不确定 MySQL 库和标头。我将 MAMP/Library/bin 添加到我的 .profile 中,这似乎有所帮助。现在它失败了,因为它找不到 mysql.h,我假设它是库/头文件的一部分? 【参考方案1】:来自https://github.com/brianmario/mysql2/issues/8
只是在控制台中复制了这个
sudo apt-get install mysql-client libmysqlclient-dev
工作了!!
【讨论】:
在 Ubuntu12.04 上为我工作,2013 年 4 月 也在 Ubuntu 13.10 上工作过 也在 Ubuntu 14.04 上工作过 当我运行这个命令时,它卸载了已经安装的 mysql 5.6 并安装了 mysql 5.7。我不想安装新版本的mysql。有什么解决方法吗? 也在 Ubuntu 20.04 上工作过 :)【参考方案2】:我用Homebrew for Mac安装mysql:
brew install mysql
然后我使用gem命令安装mysql2 gem:
sudo gem install mysql2
【讨论】:
【参考方案3】:这主要是由于缺少mysql头文件,尝试安装mysql开发人员(mysql-devel)包
通常当缺少“libmysqlclient-dev”包时会出现此错误
如果你在linux上try this link 如果你在 Windows 上这个url might help you【讨论】:
【参考方案4】:我在使用 OS X Sierra 和 MAMP 以及 Rails 5 时遇到了同样的问题。我通过
成功安装了 gemgem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config
在那之后,捆绑安装工作正常。
【讨论】:
【参考方案5】:我最终只是安装了一个新的 MySQL 副本,而不使用 MAMP,这就成功了。还必须确保安装的是 64 位版本,而不是 32 位。
【讨论】:
【参考方案6】:你可以关注这个线程Errors Installing mysql2 gem via the Bundler,它解释了 Centos 的解决方案,如果你根据你的操作系统调整命令,你可以成功安装 mysql2 gem。
【讨论】:
【参考方案7】:只需将 MAMP mysql 添加到 PATH,即可正常运行 bundle install。
$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
来源:http://blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html
【讨论】:
【参考方案8】:当我收到这个错误时,我可以通过运行来解决这个问题:
gem install devtools
【讨论】:
以上是关于错误:无法构建 gem 本机扩展(rails 3.2.3 上的 mysql2)的主要内容,如果未能解决你的问题,请参考以下文章
Rails:在 OS X 上安装 PG gem - 无法构建本机扩展
安装“nio4r”时的rails 5.0.0:无法构建gem本机扩展
Ruby with RailsInstaller,无法在 Windows 上构建 gem 本机扩展
使用“gem pq”安装 PostgreSQL gem 失败并出现错误:无法构建 gem 本机扩展
gem install rmagick -v 2.13.1 错误无法在 Mac OS 10.9.1 上构建 gem 本机扩展