v-crn Code Log

主に備忘録

bundle installでmysql2のインストールに失敗する

f:id:v-crn:20190704025849p:plain

DBとしてMySQLを使用する予定のRailsプロジェクトにてbundle installコマンドを実行した際、mysql2のインストールに失敗してしまいました。ここにその解決方法をメモしておきます。

前提

  • Ruby 2.5.3
  • Bundler 2.0.1

コマンドとエラーメッセージ

$ bundle install
......
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
<span style="color: #d32f2f">Gem::Ext::BuildError: ERROR: Failed to build gem native extension.</span>
......
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

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


<span style="color: #d32f2f">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.
</span>

原因と解決方法

mysql2 gemインストール時のトラブルシュート』によると、mysql2のインストールには--with-cppflags--with-ldflagsオプションの指定が必要とのこと。

この記事での解決方法はgem installコマンドにオプションを付けたものですが、できれば他のGemと同様にbundlerを使ってインストールしたいです。

mysql2のIssues 『Gem native extension build fails after upgrade to MacOS 10.4』にその解決方法が示されていました。

brew install openssl
bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)"
bundle install

👍