perlのcpanmでDBI::mysqlをインストールする際に「Configure failed for DBD-mysql-4.050. See build.log for details.」と出た時の対処法

perlでmysqlを使いたくなったので、cpanmでDB::mysqlをインストールする時に以下のエラーが出たので、その対処法をまとめていきます。

! Configure failed for DBD-mysql-4.050. See /Users/user/.cpanm/work/1553132323.14373/build.log for details.

ボクの開発環境

  • MacOS 10.14.3
  • perl 5.14.2

まずはlogを確認する

丁寧に「build.logを見て」と指示されているので、ログを見ましょう。

checkingとかたくさん書かれていますが、重要なのは最後の4行です。

Checking if libs are available for compiling...
Can't link/include C library 'ssl', 'crypto', aborting.
-> N/A
-> FAIL Configure failed for DBD-mysql-4.050. See /Users/username/.cpanm/work/1553132008.10765/build.log for details.

上記のエラー分は「ライブラリの’ssl’, ‘crypto’がlinkやincludeできないよ」と言う内容。

最初はMacにsslcryptoが入っていないのかな?と思い、試しにbrew install openssl等してみましたが、既にこれらのライブラリは入っていることを確認。

エラー文の通り、これらのライブラリに上手くリンクされていないのが原因っぽい。

今回の解決策

macOS(mojave)にDBD::mysqlをインストールしたいっ! – thinking now…」の記事を参考にすることで解決できました。

cpanmでインストールする際に、以下のようにすればOKでした。

cpanm DBD::mysql --configure-args="--libs='-L/usr/local/opt/openssl/lib -lssl -lcrypto -L/usr/local/lib -lmysqlclient'"

上記のコマンドの解説をすると、--configure-argsはcpanmでモジュールをインストールする際に、configureコマンドに引数を与えれると言うもの。

参考:cpanm – CPANからモジュールを取得、アンパック、インストールする – perldoc.jp

で、そのconfigureコマンドとは、C言語とかでよく使われるMakefileを作成するもので、Makefileを使うことでコンパイルを自動化できるようになります。

今回DBD::mysqlをインストールする際に、sslとcryptoがリンクされていなかったのがインストールできなかった原因のようで、上記の様なコマンドを書いてあげることで上手くインストールできました。

ReratedPosts

perlでファイルの読み込みとか作成とか削除のまとめ
Mojoliciousでディレクトリの場所を変数(属性)として格納する方法
perlの$_[0](デフォルト引数)とか@_(引数リスト)について気になったので調べた
Mojoliciousで静的ファイル(html)を読み込ませるための設定法
Mojoliciousで文字化けが起こった時の対処法2つ
Perlモジュール「Moo」(Moose)の使い方をまとめてみる