MySQL 5.6.12 + Homebrew で mysql2 gem をインストールすると mysql.h is missing エラー
Homebrew で MySQL 5.6.12 をインストールしている環境で、mysql2 gem をインストールすると以下のようなエラーが発生しました。
Installing mysql2 (0.3.11)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/chocoby/.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing. please check your installation of mysql and try again.
-----
*** 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
--without-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/chocoby/.rbenv/versions/2.0.0-p247/bin/ruby
--with-mysql-config
--without-mysql-config
Gem files will remain installed in /-/ruby/2.0.0/gems/mysql2-0.3.11 for inspection.
Results logged to /-/ruby/2.0.0/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occurred while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.
ググってみたところ、以下の情報が引っかかりました。
どうやら mysql_config
の問題のようです。
どちらの方法も試してみたので、手順を残しておきます。個人的には cflags
/cxxflags
を書き換える方で良いかと思います。
Formula の cflags
/cxxflags
を編集する方法
mysql_config
を開きます:
sudo vim /usr/local/Cellar/mysql/5.6.12/bin/mysql_config
119-120 行目をコメントアウトまたは削除し、新しく追記します:
#cflags="-I$pkgincludedir -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
#cxxflags="-I$pkgincludedir -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
bundle install
または gem install mysql2
を叩きます:
bundle install
MySQL 5.6.10 を使用する方法
MySQL 5.6.12 をアンインストールします:
brew unlink mysql
brew uninstall mysql
MySQL 5.6.10 の Formula をチェックアウトします:
cd /usr/local
git checkout 48f7e86 Library/Formula/mysql.rb
※brew versions mysql 叩くことによってバージョン毎のコミットのハッシュを確認することができます。
brew versions mysql
5.6.12 git checkout ba37612 /usr/local/Library/Formula/mysql.rb
5.6.10 git checkout 48f7e86 /usr/local/Library/Formula/mysql.rb
5.5.29 git checkout 336c976 /usr/local/Library/Formula/mysql.rb
5.5.28 git checkout 5825f62 /usr/local/Library/Formula/mysql.rb
...
MySQL 5.6.10 をインストールしていない場合はインストールします:
brew install mysql
以前に MySQL 5.6.10 をインストールしている場合は再リンクします:
brew link mysql
bundle install
または gem install mysql2
を叩きます:
bundle install
焦りました。これ、これからどうなるのでしょうかね...