bundle installでmysql2のインストールに失敗する
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
👍