Mac で erlenv を使う際 Erlang/OTP が OpenSSL 付きでビルドできない問題

More than 1 year has passed since last update.

結論から書くと、Mac OS X が標準で用意している SSL のライブラリを使おうとすると (自分の指定のしかたが悪いのかもしれないが) Erlang/OTP をソースからビルドしてもうまくいかない。事前に brew を使って openssl をインストールしておくと良いようだ。

ここでは otp_src_18.2.1 と Elixir 1.2.2 を前提としている。

症状としては

Mac OSXにanyenv/exenvでElixirをインストールする

の手順に沿って進めていくと、exenv install ... のところでエラーが出る。厳密に見比べていないが

https://github.com/taylor/kiex/issues/7

で紹介されているエラーメッセージに近く、実際ここに記載がある通り erl を起動して crypto:start(). してみるとエラーになる。

otp_src_18.2.1 の ./configure 時に OpenSSL の問題が出ているようだ。

そこでこの ./configure 時に --with-ssl=/usr を追加すると

*********************************************************************
**********************  APPLICATIONS DISABLED  **********************
*********************************************************************

crypto         : OpenSSL is configured for kerberos but no krb5.h found
odbc           : ODBC library - link check failed
ssh            : OpenSSL is configured for kerberos but no krb5.h found
ssl            : OpenSSL is configured for kerberos but no krb5.h found

と表示され Erlang/OTP はビルドは完了するが、同様に erlcrypto:start(). 実行時にエラー (下記の --enable-dynamic-ssl-lib をさらに追加しても同様)。

https://github.com/Homebrew/homebrew/blob/master/Library/Formula/erlang.rb

を見ると

--enable-dynamic-ssl-lib
--with-ssl=#{Formula["openssl"].opt_prefix}

としているようなので、brew install openssl してから

--enable-dynamic-ssl-lib
--with-ssl=/usr/local/opt/openssl

を追加したところ、無事 Mac OSXにanyenv/exenvでElixirをインストールする の手順で Elixir までインストール完了。

ある人から「事前に homebrew で openssl をインストールしておけば上記 2 つの configure オプションは不要」とも聞いたが、私の方では確認していない。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.