fkm_y' log

技術や日常のログ

mysql2 インストール時に 「ld: library not found for -limported_openssl」が表示された場合の対応

ローカルのRails開発環境を構築するときにハマったので対応方法を記しておく。 mysql2が修正されるまでハマる人が多そうなので手助けになれば!

追記(2019/12/09)

現在は Homebrew の mysql@5.6 の修正が完了しているようです。

ld: library not found for -limported_openssl on macOS 10.14.6 · Issue #1074 · brianmario/mysql2 · GitHub

前提情報

環境はこんな感じ

遭遇してたこと

10/15頃にbundle install にて mysql2 をインストールしようとすると以下のエラーが発生してコケていた。 railsの環境構築で必要な他の対応は済んでいたんだけど、 -limported_openssl ライブラリがないというのに遭遇してた。。ググっても検索にヒットする情報も数件程度しかなく困ってた。

最終的に10/17に記載されてたmysql2のissueを読んで解決に至った。

github.com

(省略)

linking shared-object mysql2/mysql2.bundle
ld: library not found for -limported_openssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

原因

  • mysql2 の 0.5.20.4.10 で発生している不具合らしく limported_openssl に対するリンクが10/14のMySQL 5.6.46から変更されたことが原因らしい。

解決方法

issueに記載されてる方法を試して解消した。

  • MySQL@5.6MySQL@5.6.46 の前バージョンである MySQL 5.6.46に切り替えることにより回避できる。
    • git checkoutがうまく切り替わらないことがあるらしいので、git checkout後に git の log を確認するなどして切り替わっていることを確認したほうが良い。
$ brew uninstall mysql@5.6
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
$ git checkout f171f1c746db01c283aa137cb24248fbb8eb7a18 Formula/mysql@5.6.rb
$ brew install mysql@5.6

所感

無事解決した訳だけど、ググっても解決方法が見つからない場合はバグの可能性も考えてGitHubのissuesに挙がっていないか確認する癖を付けると良さそうに思いました。あとは問題に遭遇したタイミングでissueを記載できるとなお良さそう。