背景
Go to this site to download the package according to the python version. And use pip install filename like i have python 3.7.1 and download the file in red circle and open terminal where file downloaded and install that file e.g pip install mysqlclient-1.4.4-cp37-cp37m-win32.whl. Mac OS X Yosemite. Libboostunittestframework.a -lssl -lcrypto -lpthread ld: library not found for -l:libboostunittestframework.a collect2. From: brian dot bream at comcast dot net: Assigned: Status: Not a bug: Package: Compile Failure: PHP Version: 5.1.2: OS: Solaris 10: Private report: No: CVE-ID: None. Both errors are related to the OpenSSL development libraries not being installed ( -lssl is a pretty dead giveway). The -lssl can be divided into -l, meaning 'link with', and ssl, which is the desired library gcc is asked to link in. Usually, the file to link in is named lib.a and it needs the headers.
とある教材を見ながらプロジェクトを作成していたところ、bundle install を実行したらエラーが発生したのでメモ。
「Mysqlの導入で発生したエラー解消」という内容で、最終的に「bundleのオプション指定」することにより解消できた。
実行したコマンド
エラー内容
考えたこと
- そういえばプロジェクト作成のときにDBをmysqlで指定したのは始めてだな。
- mysql2 0.5.2 をインストールできないということかな。
gem install mysql2 -v '0.5.2'
を実行しなさいと言ってるのかしら?- Gemfile でmysql2 のバージョンは何になってる?
- ひとまずググるか。
やったこと
Gemfile の確認
Gemfile 内の記述は以下の通り。
ダメな部分があるか否かが不明のため、ひとまず確認のみ。
エラーログに記載されているコマンドを実行
結果、エラーの解消にはつながらなかった。
ググる!→このコマンドでエラー解消!【解決】
エラーの原因特定、解消方法を調べてみたところ、下記コマンド実行にて解決した。
※追記:解消方法コマンド1行目に$ bundle config --local build.mysql2 '--with-cppflags=-I/usr/local/opt/openssl/include'
という記述をしておりましたが、後で実行されるコマンドで上書きされるため不要ということがわかり削除しました。(@keik 様、ご指摘いただきありがとうございます)
その後、下記コマンドを実行することで「You’re on Rails」画面を開くことができたので今回のエラーは解決とする。
原因・学び
今回のエラー解消に際し、色々と調べる中で学んだことをメモ。
エラーについて
どうやら、今回は下記エラーログがポイントだった模様。
原因を言語化すると、opensslのパスがビルドの時に必要(ビルドのときにLDFLAGSとかCPPFLAGSとかにパスを追加する記述が必要)ということ。
ld とは?
ld
はGNUリンカーと呼ばれるコマンドとのこと。$ man ld
で内容を確認できる。
-lssl
は、mysql2 gemインストール時にld
コマンドに与えられたオプションの一つらしい。
ここでは詳細の掘り下げはせずに置いておく。。
解決策について
bundle config とは?
下記ページにて詳細を確認する事ができた。
コマンドbundle config
により、Bundlerの設定システムを操作することができるとのこと。
なお、 Bundlerは自身の設定を下記の優先順位で取得する。
Ld Library Not Found For Lssl Mac Mysql Download
1. ローカルのアプリケーション(app/.bundle/config
)
2. 環境変数
3. ユーザーのホームディレクトリ(~/.bundle/config
)
また、--local
オプションをつけることで、ローカルのアプリケーションに対して設定が可能。つまりプロジェクト単位の設定となる。
宿題
Ld Library Not Found For Lssl Mac Mysql Command
- bundle config で指定する「LDFLAGS」「CPPFLAGS」についてもう少し調べるべし。
- ld コマンドについてももう少し。(仮)