GNU/LinuxでのErlang/OTPの導入手段はいくつかあるが、ここでは kerl を使う方法を採用する。以下のような利点がある。
-
簡単に導入できる (
build
とinstall
コマンドを実行するだけ) - 最新版のErlang/OTPが使える (erlang.orgで配布されているソースコードからビルドするのでリリース直後から使える)
- 複数バージョンのErlang/OTPを導入・管理できる
特に3はErlangで複数のシステムを開発・保守する際に重宝する。Erlangの異なるバージョンだけでなく、同じバージョンでビルドオプションを変えたもの(HiPEのあり/なし、最小構成のアプリケーションのみなど)をいくつでも導入して、切り替えながら使える。
準備
Erlangのビルドに必要なパッケージを導入する。
Fedora、RHEL、CentOSの場合
$ sudo yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf
$ sudo yum install curl git
Debian、Ubuntuの場合
$ sudo apt-get install build-essential libncurses5-dev openssl libssl-dev
$ sudo apt-get install curl git-core
Arch Linuxの場合
$ sudo pacman -S gcc glibc make ncurses openssh autoconf
$ sudo pacman -S curl git
kerlスクリプトの導入
kerlスクリプトをGitHubからダウンロードし、実行できるようにする。
$ curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
$ chmod a+x kerl
スクリプトは PATH
の通った場所に置く。
例: ~/bin
に置く場合
$ mkdir -p ~/bin
$ mv kerl ~/bin/
$ echo "export PATH=$PATH:~/bin" >> ~/.bashrc
$ source ~/.bashrc
デフォルトのErlang configオプションの指定
Erlangのビルドに使うデフォルトのconfigオプションを ~/.kerlrc
に書いておく。
$ echo 'KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll" ' > ~/.kerlrc
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" 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