LoginSignup
20
18

More than 5 years have passed since last update.

Macでkerlを使用して複数バーションのErlang/OTPを導入する

Last updated at Posted at 2013-01-04

Mac(OS X)でのErlang/OTPの導入手段はいくつかあるが、ここでは kerl を使う方法を採用する。以下のような利点がある。

  1. 簡単に導入できるbuildinstall コマンドを実行するだけ)
  2. 最新版のErlang/OTPが使える (erlang.orgで配布されているソースコードからビルドするのでリリース直後から使える)
  3. 複数バージョンの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 に登録し、ログインする。(登録は無料) 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

参考にしたページ

20
18
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
20
18