LoginSignup
8
6

More than 5 years have passed since last update.

OSX 10.10 に kerl で Erlang 17.5 をインストールし, crypto:start/0 を成功させる

Posted at

概要

Mac を新調し kerl で Erlang をインストールしたところ, R16B03-1 では crtpto:start/0 の評価に成功するが, 17.5 では評価に失敗する.

crypto:start/0 の評価に失敗すると, Elixir のインストールどころか rebar の実行にも支障が出る. そこで, 正しいインストール方法を備忘録として残す.

環境

  • OSX 10.10.3
  • Xcode 6.3
  • OpenSSL 1.0.2a
  • Erlang 17.5

Command Line Tools for Xcode をインストール

gcc などの開発用コマンドを有効にするため, Command Line Tools for Xcode をインストールする.

  1. Xcode を App Store からインストールし, 起動
  2. Xcode メニューから Open Developer Tool, More Developer Tools を選択
  3. ブラウザに Apple Developer のログイン画面が表示された後, ログイン
  4. Downloads for Apple Developers の画面が表示された後, Command Line Tools(OS X 10.10) for Xcode 6.3 を選択し, ダウンロード
  5. ダウンロード後, インストール

gcc のバージョンを確認しておく.

$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)

OpenSSL をインストール

OSX 10.10.3 に標準で含まれている OpenSSL は 0.9.8zd であるため, Homebrew や MacPorts で 1.0.2a をインストールする.

MacPorts でインストールする例は次の通り.

$ sudo port install openssl

Homebrew でインストールする例は次の通り.

$ sudo brew install openssl

OpenSSL のバージョンを確認しておく.

$ openssl version
OpenSSL 1.0.2a 19 Mar 2015

kerl をインストール

Erlang の複数の異なるコンパイルオプションやバージョンを試すため, kerl をインストールする.

$ cd /path/to/bin
$ curl -O https://raw.githubusercontent.com/spawngrid/kerl/master/kerl
$ chmod a+x ./kerl

リリースされている Erlang の一覧を確認しておく.

$ kerl list releases
17.0-rc1 17.0-rc2 17.0 17.1 17.3 17.4 17.5 R10B-0 R10B-10 R10B-1a R10B-2 R10B-3 R10B-4 R10B-5 R10B-6 R10B-7 R10B-8 R10B-9 R11B-0 R11B-1 R11B-2 R11B-3 R11B-4 R11B-5 R12B-0 R12B-1 R12B-2 R12B-3 R12B-4 R12B-5 R13A R13B R13B01 R13B02-1 R13B02 R13B03 R13B04 R14A R14B R14B01 R14B02 R14B03 R14B04 R14B_erts-5.8.1.1 R15B R15B01 R15B02 R15B02_with_MSVCR100_installer_fix R15B03-1 R15B03 R16A_RELEASE_CANDIDATE R16B R16B01 R16B02 R16B03-1 R16B03
Run "/Users/masahito.ikuta/bin/kerl update releases" to update this list from erlang.org

出力されている通り, kerl update releases で一覧を更新可能.

Erlang コンパイル時の configure のオプションを指定する.

~/.kerlrc
KERL_CONFIGURE_OPTIONS="--enable-kernel-poll --enable-threads --enable-dynamic-ssl-lib --enable-smp-support --enable-darwin-64bit --disable-hipe --disable-native-libs --disable-sctp --without-javac --without-odbc --without-wx --with-ssl=/opt/local"

指定オプションの意図

OSX 10.10 関連

  • --enable-kernel-poll
  • --enable-threads
  • --enable-smp-support
  • --enable-darwin-64bit
  • --disable-hipe

OpenSSL 関連

ここを誤ると, crypto:start/0 が失敗する.

  • --enable-dynamic-ssl-lib
  • --with-ssl=/opt/local

Homebrew で OpenSSL をインストールした場合, --with-ssl=/usr/local/opt/openssl とする.

不要な機能

ここは, 好みや用途に合わせる.

  • --disable-native-libs
  • --disable-sctp
  • --without-javac
  • --without-odbc
  • --without-wx

Erlang をインストール

ここまでの手順で, 全ての準備が整ったため, Erlang 17.5 をインストールする.

kerl list releases に含まれる 17.5 をビルドする.

$ kerl build 17.5 17.5

kerl list builds に含まれる 17.5 をインストールする.

$ mkdir -p /path/to/erlang
$ kerl kerl install 17.5 /path/to/erlang/17.5

インストールされたか確認する.

$ kerl list installations
17.5 /path/to/erlang/17.5

crypto.so がリンクしているライブラリを確認する.

$ otool -L /path/to/erlang/17.5/lib/crypto-3.5/priv/lib/crypto.so
/path/to/erlang/17.5/lib/crypto-3.5/priv/lib/crypto.so:
        /opt/local/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

ここで, OSX 10.10 に標準で含まれている /usr/lib/libcrypto.0.9.8.dylib がリンクされていると crypto:start/0 は失敗する.

最後に, application:start/1 経由で crypto:start/0 を確認する.

$ . /path/to/erlang/17.5/activate
$ erl +Ktrue
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:true]

Eshell V6.4  (abort with ^G)
1> application:start(crypto).
ok
2> q().
8
6
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
8
6