Mac(OS X)でのErlang/OTPの導入手段はいくつかあるが、ここでは kerl を使う方法を採用する。以下のような利点がある。
-
簡単に導入できる (
build
とinstall
コマンドを実行するだけ) - 最新版のErlang/OTPが使える (erlang.orgで配布されているソースコードからビルドするのでリリース直後から使える)
- 複数バージョンのErlang/OTPを導入・管理できる
特に3はErlangで複数のシステムを開発・保守する際に重宝する。Erlangの異なるバージョンだけでなく、同じバージョンでビルドオプションを変えたもの(HiPEのあり/なし、最小構成のアプリケーションのみなど)をいくつでも導入して、切り替えながら使える。
準備:Intelプロセッサ搭載Macの場合
OS X 10.8 Mountain Lionで検証済み。マシンはIntel Core i7搭載のMac mini Mid 2012を使用。
$ uname -a
Darwin mini2012.local 12.2.1 Darwin Kernel Version 12.2.1: Thu Oct 18 12:13:47 PDT 2012; root:xnu-2050.20.9~1/RELEASE_X86_64 x86_64
gccのインストール
App Storeアプリで Xcode 4.x を検索し、インストールする。Xcodeを起動し、Xcodeメニューから Preferences を選択。 Downloads パネルに切り替え Command Line Tools のInstallボタンを押す。
デフォルトのErlang configオプションの指定
Erlangのビルドに使うデフォルトのconfigオプションを ~/.kerlrc
に書いておく。 --enable-darwin-64bit
は重要なので必ず指定する。
$ echo 'KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --enable-darwin-64bit" ' > ~/.kerlrc
準備:PowerPCプロセッサ搭載Macの場合
Mac OS X 10.5 Leopardで検証済み。マシンはPowerPC G4搭載のMac mini G4を使用。
$ uname -a
Darwin mini-two.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:57:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_PPC Power Macintosh
gccのインストール
Appleの [Mac Dev Center] (https://developer.apple.com/devcenter/mac/) に登録し、ログインする。(登録は無料) Downloadエリアから Xcode 3.1.4 をダウンロードし、インストーラーを起動する。インストールの種類で UNIX 開発サポート のチェックマークがオンになっていることを確認し、インストールする。
デフォルトのErlangビルドオプションの指定
Erlangのビルドに使うデフォルトのconfigオプションを ~/.kerlrc
に書いておく。PowerPCでは --enable-darwin-64bit
を指定してはいけない。
$ echo 'KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll" ' > ~/.kerlrc
kerlスクリプトの導入
kerlスクリプトをGitHubからダウンロードする。
$ curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
PowerPC Mac(Mac OS X 10.5.8)ではGitHubのSSL証明書の確認エラーになってしまった。発行元(CA)の情報が登録されていないらしい。
$ curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
(以下略)
このような場合は curl コマンドに --insecure
オプションを付けて証明書の確認を省くか、心配なら、Safariで開き、保存すればよい(Safariなら証明書の確認ができる)
スクリプトをダウンロードしたら、実行できるようにする。
$ chmod a+x kerl
スクリプトは PATH
の通った場所に置く。
例: ~/bin
に置く場合
$ mkdir -p ~/bin
$ mv kerl ~/bin/
$ echo "export PATH=$PATH:~/bin" >> ~/.bashrc
$ source ~/.bashrc
Erlang/OTPの導入
Erlangをソースコードからビルドして導入しよう。まず、導入可能なErlangバージョンの一覧を表示する。
$ kerl list releases
Getting the available releases from erlang.org...
R10B-0 R10B-10 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 R15B R15B01 R15B02 R15B03-1 R15B03
Run "kerl update releases" to update this list from erlang.org
なお、この一覧は自動では更新されない。新しいバージョンのErlangがリリースされたら、以下のコマンドで更新する。
$ kerl update releases
ソースコードからビルド
お好みのバージョンをビルドする。 R15B03-1
が導入したいバージョン、 r15b03-1
がビルドにつける任意の名前となる。
$ kerl build R15B03-1 r15b03-1
Downloading otp_src_R15B03-1.tar.gz to .kerl/archives
(中略)
Getting the checksum file from erlang.org...
(中略)
Verifying archive checksum...
Checksum verified (eccd1e6dda6132993555e088005019f2)
Extracting source code
Building Erlang/OTP R15B03-1 (r15b03-1), please wait...
Erlang/OTP R15B03-1 (r15b03-1) has been successfully built
ビルドオプションを変える時は、別の名前(例 r15b03-1_hipe
)を付ければ、他のビルドと共存できる。
$ KERL_CONFIGURE_OPTIONS="--enable-hipe --enable-darwin-64bit" kerl build R15B03-1 r15b03-1_hipe
ビルドの一覧を表示する。
$ kerl list builds
R15B03-1,r15b03-1
R15B03-1,r15b03-1_hipe
インストール
ビルドできたらインストールする。 ~/erlang/r15b03-1
はインストール先のディレクトリ。
$ kerl install r15b03-1 ~/erlang/r15b03-1
Installing Erlang/OTP R15B03-1 (r15b03-1) in ~/erlang...
You can activate this installation running the following command:
. ~/erlang/r15b03-1/activate
Later on, you can leave the installation typing:
kerl_deactivate
インストール済みのビルドを一覧表示する。
$ kerl list installations
r15b03-1 ~/erlang/r15b03-1
アクティベート(有効化)
インストール済みビルドの1つをアクティベート(有効化)する。アクティベートでは $PATH
を変更することで指定したインストール済みビルドの bin/
配下にあるコマンドが使われるようにしているので、アクティベートを実行したシェルセッション内でのみ有効となる。シェルを終了したり kerl_deactivate
を実行すると無効化される。
$ . ~/erlang/r15b03-1/activate
$ erl
Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:8:8] [async-threads:0] [kernel-poll:false]
Eshell V5.9.3.1 (abort with ^G)
1>
試しに別のビルドに切り替えてみる。
$ kerl install r15b03-1_hipe ~/erlang/r15b03-1_hipe
$ . ~/erlang/r15b03-1_hipe/activate
$ erl
Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.9.3.1 (abort with ^G)
1>
[hipe]
と表示されたことから、HiPEが有効になっていることがわかる。
その他の便利コマンド
いまアクティブになっているビルドを表示する。
$ kerl active
The current active installation is:
~/erlang/r15b03-1
コマンドでkerlの状態のオーバービューを表示する。
$ kerl status
Available builds:
R15B03-1,r15b03-1
R15B03-1,r15b03-1_hipe
----------
Available installations:
r15b03-1 ~/erlang/r15b03-1
----------
The current active installation is:
~/erlang/r15b03-1
もし使わなくなったビルドがあれば削除しておこう。
$ kerl delete build r15b03-1
$ kerl delete installation ~/erlang/r15b03-1
sshやrsyncでアクセス可能な他のマシンにインストールすることもできる。
$ kerl deploy anotherhost /path/to/install/dir
参考にしたページ
-
kerl -- Easy building and installing of Erlang/OTP instances
-
Basho Riak Docs -- Installing Erlang