web-dev-qa-db-ja.com

エラー:gemネイティブ拡張のビルドに失敗しました(mysql2 on Rails 3.2.3)

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を実行しています。これが悪い考えかどうかはわかりません。VanillaMySQlを実行する必要がありますが、現在の問題はgemをインストールするだけのようです。私はここでstackoverflowでこれらの問題のかなりの数を見ましたが、すべてが少し異なるように見えるか、本当に複雑な解決策を持っています。私が見逃しているものはありますか?シンプルなもの?あほらしいもの?必要に応じて、outファイルから追加情報を提供できます。開発とテストにSQLiteを使用し、その後MySQLをprodで使用する人もいますが、それはかなり恐ろしいアイデアのように聞こえます。

47
Ryan Arneson

結局、MAMPを使用せずにMySQLの新しいコピーをインストールするだけになり、それでうまくいきました。また、32ビットではなく、64ビットバージョンを必ずインストールする必要がありました。

1
Ryan Arneson

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

コンソールでこれをコピーしました

Sudo apt-get install mysql-client libmysqlclient-dev

そして働いた!!

127
juanpastas

Homebrew for Mac を使用してmysqlをインストールしました。

brew install mysql

次に、gemコマンドを使用してmysql2 gemをインストールしました。

Sudo gem install mysql2
40
Jarrett Coggin

これは主にmysqlヘッダーがないためです。mysqldeveloper(mysql-devel)パッケージをインストールしてください。

通常、このエラーは「libmysqlclient-dev」パッケージが欠落している場合に発生します

17
sameera207

OS X SierraとMAMPとRails 5.を使用して同じ問題に遭遇しました。

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

その後、バンドルインストールは正常に機能しました。

2
hpcodecraft

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

0
Greg Benner

このエラーが発生したとき、次を実行することでこれを修正できました。

gem install devtools
0
John Langford

このスレッドに従うことができます Bundler経由でmysql2 gemをインストールする際のエラー これはCentosの解決策を説明し、OSでコマンドを微調整してmysql2を正常にインストールできる場合、この問題は修正されます宝石。

0
maniempire