LoginSignup
5
4

More than 3 years have passed since last update.

mysql2がbundle installできない時の対処方法

Last updated at Posted at 2019-06-03

bundle installできない

$ bundle install

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2 for
inspection.
Results logged to
/Users/naoya.ohsaki/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/gem_make.out

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

解決策の中でもググったものが使えない

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

このコマンドは海外のさいとにもあるし、日本のエンジニアの方もあちこちで載せてくれているコマンドですが、私の場合、無反応でした。

$ cat /Users/ユーザー名/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log

mkmf.logを見に行きます。

clang: error: unsupported option '--with-cppflags=-I/usr/local/opt/openssl/include'

と書いてあるので、さっきのコマンドのcppflagsオプションを外して、

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

とし、

$ bundle install

してみます。

$ Bundle complete! 22 Gemfile dependencies, 85 gems now installed.

できました。

結論

mkmf.logを見にいくってのが大事なことです。
しかし、なんでこんな面倒なことが起こるのかというと、

結論としては、opensslのビルドオプションに問題があるからです。
どうやらmysql2のgemってのはC言語で書かれているみたいで、ビルドする際にオプション指定する必要があるみたいですね。他の記事では両方指定してやってることが多いですが、ログを見ると片方アンサポートになったようですねぇ。二つもいらんということなので変更されたってことなんでしょうね。

参考文献

【Rails】MySQL2がbundle installできない時の対応方法

mysql2 gemインストール時のトラブルシュート

【Rails環境構築】MySQL2が原因で「bundle install」失敗した時の対処法

5
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4