yunomuのブログ

酒とゲームと上から目線

Erlangをソースから入れる

なんかちょいちょい電車の中から広告で見てた水樹奈々のTHE MUSEUM IIのジャケットがかわいかったから衝動買いして、それについてたPVを見ながらこの記事を書いています。
かわいいなぁ。
とかやってるうちに終わりましたけど。
まどか☆マギカ見よう。

最近、Erlangにハマっておりまして、ようやくなんか書ける気がしてきたので、隙あらば使ってみようなどと思っているところです。
この本が結構良かった。
Amazon.co.jp: プログラミングErlang: Joe Armstrong, 榊原一矢: 本
普通の教科書なんですけど、エッセイかと思うくらい言い回しが微妙に面白かったりとか、前から順に読んでいくと「今欲しいのはコレだろ?」と言わんばかりに欲しい情報が出てくる感じで。サンプルコードを全部打ち込んでいく感じでやっていくとちょうどいいスピードで進んでいくと思います。1週間あればなんか書いてみようとおもうくらいにはなるんじゃないかなぁと。

で、なんか書いてみたかったので、仕事の息抜きにAWS上のAmazonLinuxにErlang入れてなんかサービス作ってみようかなぁなどと思ったはいいものの、yumでErlangが見つからない。仕方ねぇいい機会だし、ソースから入れてみるか。と思った記録。
普通はこんなことやらなくてもyumだのaptだのportsだのでそれなりに新しいバージョンのが入るらしいです。私のMacでもMac portsで入りました。便利な時代ですね。

で、私が使った環境。
AmazonLinuxで、既にAWSSDK for Rubyを入れて遊んでたのでそれなりにパッケージは入っているものとする。先にそっちの記事書けばよかったな。

ビルド

まずはダウンロード。
http://www.erlang.org/download.html
ここから、Source FileとMan Pages Fileをダウンロードします。今のバージョンはR15Bでした。OTPってのはたぶん最終的にお世話になる標準アプリケーションフレームワークの名前です。
で、あとはお決まりの通り。

# tar xvzf otp_src_R15B.tar.gz
# cd otp_src_R15B
# ./configure

するとconfigでコケた。

configure: error: No curses library functions found
configure: error: /bin/sh '/home/ec2-user/tmp/otp_src_R15B/erts/configure' failed for erts

libcursesが無いっぽいんじゃないかな? ということで仰せの通り、ncursesを入れる。

# yum -y install ncurses ncurses-devel
# ./configure

今度はなんか嫌な感じの出た。

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

crypto         : No usable OpenSSL found
jinterface     : No Java compiler found
odbc           : ODBC library - link check failed
orber          : No C++ compiler found
ssh            : No usable OpenSSL found
ssl            : No usable OpenSSL found

*********************************************************************
*********************************************************************
**********************  APPLICATIONS INFORMATION  *******************
*********************************************************************

wx             : wxWidgets not found, wx will NOT be usable

*********************************************************************
*********************************************************************
**********************  DOCUMENTATION INFORMATION  ******************
*********************************************************************

documentation  :
                 fop is missing.
                 Using fakefop to generate placeholder PDF files.

*********************************************************************

よく見ると別にそんな嫌な感じじゃなかった。OpenSSLとC++コンパイラODBCとjavacとwxとfopが無いっぽいというのがなんとなくわかるので、とりあえず片っ端から入れる。
wxは……、めんどくさいしパッケージ無いしGUI使わないから要らないので捨ておく。

# yum -y install openssl openssl-devel gcc-c++ unixODBC unixODBC-devel fop java-1.6.0-openjdk-devel

あとはお決まりの通り。

# make
# make install

これで私は無事にインストールできました。すごく親切だ。おめでとうございます。

マニュアルをインストール

とはいえErlangはマニュアルっていうかmanページが無いと始まらないですよね。
ってことで、ダウンロードしたマニュアルをErlangのディレクトリに突っ込む。

# tar xvzf otp_doc_man_R15B.tar.gz -C /usr/local/lib/erlang/

インストール先ディレクトリは適当に変更しましょう。これで"erl -man"が使えるようになります。

さて環境できたことだし、遊ぶぞー