0
0

More than 3 years have passed since last update.

Railsで gem install mysql2 でなかなかうまくいかない件

Posted at

この記事では RailsでGemを入れる時にmysql2がやっかいで入らないのを解決する記事です。
同様の記事はかなりたくさんあるのですが、2020/04/28現在、全部やってもうまくいかなくてGithubのissueとStackOverFlowでなんとかいったのでその紹介です。
mysql5.7や8.0使いたいのに5.6に戻す系は自分的には目的に沿ってないのであくまでもポジティブに攻めてます。(いつも)

エラー

ld: library not found for -lssl

特に解決につながった参考記事

やったこと 1 xcode-select --install

そもそも、人によってうまくいくパターンが異なるのは、それぞれの環境での「どこまでやったか」が異なることが大きいと思います。

なので、やったことを書いていきます。

xcode-select --install

そもそもやってないとだめなのかどうか微妙。
これで解決した人もいるらしい。

やったこと2 openssl をインストールしてパス通す

brew install openssl
または
brew install openssl@1.1

ののち、インストールの最後のログに出るパスを通す。

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
または
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

私は@1.1で両方やりました。
また、これを プロジェクトルート/.bundle/config に追加するやり方もありますね。
以前はうまくいってましたが、最新PCではこれではうまくいかなくなってました。

やったこと3 LIBRARY_PATH

opensslのインストールののち、

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

やったこと4 (2)の内容をoptionでつけてgem install

gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\"

これだけだとうまくいかないけど、(3) LIBRARY_PATH と両方やるとうまくいった感がありました。
(3), (4)をやれば(1)がいらないのかどうかはもはや不明ですが、ここまででなんとかなりそうだと思ってます。

以上となります。

PC新調、OSアップデートなどでよくひっかかるこのエラー、ハマる人が減ることを祈ります。

0
0
0

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
0
0