LoginSignup
3
3

More than 5 years have passed since last update.

Linux (Ubuntu 16.04) での exenv / erlenv を用いた Elixir / Erlang のソースコードインストール

Last updated at Posted at 2018-10-03

ZACKYこと山崎進です。

Linux (Ubuntu 16.04) に Elixir をソースコードインストールしたので,やり方をまとめておこうと思います。exenv / erlenv を使うことで,バージョンを切り替えられるようにしました。

macOS / Homebrew での exenv / erlenv を用いた Elixir / Erlang のソースコードインストールはこちら

事前準備

まず Ubuntu 16.04 (日本語)をインストールします。この手順は省略させてください。

次に左上の「コンピュータを検索」から「端末」もしくは terminal で検索し,端末を選択して,起動します。端末は頻繁に使うので,左下の端末アイコンを右クリックして,「Launcherへの登録」をしておきましょう。ドラッグすれば場所も移動できます。

前提となるソフトウェアをインストールするために,端末アイコンに下記のコマンドを入力します。(行頭の $ はコマンドプロンプトなので,入力する必要はありません)

$ sudo apt-get install build-essential git wget libssl-dev libreadline-dev libncurses5-dev zlib1g-dev m4 curl g++ fop xsltproc libxml2-utils

するとパスワードの入力を求められるので,ログインした時のパスワードを入れます。途中で 続行しますか? [Y/n] と聞かれるので,Y と答えます。

sudo コマンドは,管理者権限でコマンドを実行するというものです。不用意に用いないことが大事です。

apt-get はパッケージを管理するソフトウェアです。Ubuntu は apt-get でさまざまなツールをインストールしたり削除したりします。

erlenv の取得と設定

次に,下記コマンドを入力して,erlenv を取得します。

$ git clone https://github.com/talentdeficit/erlenv.git $HOME/.erlenv

erlenv を有効にするには ~/.bashrc もしくは ~/.bash_profile に設定を記述する必要があります。どちらに記載するべきかわからない場合は,~/.bashrc に追記しましょう。下記のコマンド3つで追記できます。(1つ目は無くても大丈夫ですが,あとで .bashrc の設定を見直す時に役立つコメントになります)

注意: >> を間違えて > としてしまうと,初期設定ファイルを上書きして消してしまうので,注意してください! 不安な人は,cp コマンドでバックアップを作っておくといいでしょう(後述)。

$ echo '# for erlenv' >> ~/.bashrc
$ echo 'export PATH="$HOME/.erlenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(erlenv init -)"' >> ~/.bashrc

.bashrc のバックアップの作り方はこちら。

$ cp ~/.bashrc ~/.bashrc.bak

復元の仕方はこちら(エラーが起きたら実行してください)

$ cp ~/.bashrc.bak ~/.bashrc

新しい端末を起動して,エラーなく起動することを確認しましょう。新しい端末の起動のしかたは,左側の端末のアイコンを右クリックして「新しい端末」をクリックします。

次に新しい端末で次のコマンドを打ちましょう。

$ which erlenv

次のように表示されればOKです。(あなたのアカウント名)には実際にはあなたのアカウント名が入ります。

/home/(あなたのアカウント名)/.erlenv/bin/erlenv

うまくいかなかったら,古い端末でバックアップから復元してから再度試みてください。うまくいったら,古い端末は閉じて,以後新しい端末で作業しましょう。

なお,古い端末をそのまま使いたい場合には次のコマンドを入力すれば,新しい環境が反映されます。

$ source ~/.bashrc

以後,~/.bashrc については,ここまでていねいな説明なく進めていきたいと思います。

Erlang のビルドとインストール

Erlang はソースコードからインストールします。まずErlang のダウンロードページを見て,ダウンロードすべきバージョンを見定めます。2018年10月3日現在の最新版はOTP21.1です。あえて古いバージョンをダウンロードしても構いません。

ダウンロードは次のように行います。今回はOTP21.1を対象として説明します。もし他のバージョンにしたい場合は,コマンド中の 21.1 を適宜変更してください。

$ curl -O http://erlang.org/download/otp_src_21.1.tar.gz

それなりに時間がかかります。

ダウンロードが終わったら次のコマンドで展開します。

$ tar xzf otp_src_21.1.tar.gz

展開が終わったらソースコードのディレクトリに移動します。

$ cd otp_src_21.1

次にErlangのビルドオプションを設定するのですが,実に多彩なオプションがあります。下記コマンドでオプションを概観することができます。(が,初心者の人は見なくていいです)

$ ./configure --help

21.1 の場合の私のおすすめ設定は下記の通りです。間違わないように入力してくださいね。

./configure --prefix=$HOME/.erlenv/releases/21.1 --enable-smp-support --enable-threads --enable-kernel-poll --enable-hipe --without-javac --enable-dirty-schedulers --enable-sharing-preserving --enable-lock-counter --disable-sctp --without-obdc 

性能上,特に重要なオプションは --enable-smp-support--enable-threads --enable-hipe --enable-dirty-schedulers です。これらを忘れると Elixir や Erlang がせっかくの高いパフォーマンスを十分に発揮できなくなるので,注意してください。(いくつかのオプションは,古いバージョンだと存在しないかもしれません)

configure コマンドを実行するとまあまあ時間がかかります。

無事終了したら,次のように入力します。

$ touch lib/wx/SKIP lib/odbc/SKIP

これらは,wx と odbc を無効にするという意味です。touchコマンド自体は,現在の時刻でファイルを作成するというものです。

次にいよいよビルドです。次のコマンドを入力して,かなり待ちます。

$ make

エラーがなく無事終わったら,次のコマンドでインストールしましょう。再びパスワードが聞かれるかもしれませんね。

$ sudo make install

これで,Erlang がインストールできたのですが,あとは今インストールしたバージョンを有効にする必要があります。次の2つのコマンドを続けて入力します。

$ erlenv global 21.1
$ erlenv rehash

次のコマンドを入力してバージョン等を確認しましょう。

$ erl

次のように表示されます。

Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:40:40] [ds:40:40:10] [async-threads:1] [hipe] [sharing-preserving]

Eshell V10.1 (abort with ^G)
1> 
  • 21 はOTPのバージョンの整数部分です。
  • もし64ビットマシン/OSだった時には[64-bit]になるはずですが,もし[32-bit]になるようならば設定を見直す必要があります。
  • [smp:40:40] のような表示は,マルチコアでの実行を有効にします。数字は論理コア数です。ハイパースレッディングが有効ならばコア数の倍,無効ならばコア数と同じになります。VirtualBox などのVMでの実行では1になっているかもしれません。この表示が出ていない場合は,configure コマンドの実行で --enable-smp-support を忘れています。
  • [hipe]という文字がありますか? HiPE は High Performance Erlang の略で,ネイティブコードにコンパイルして実行します。これが表示されない場合は,configure コマンドの実行で --enable-hipe を忘れています。

コマンドプロンプトが Eshell に取られているので,終了します。終了するには,コントロールキー+C (^C) を押して,a を押します。

最後に cd コマンドでホームディレクトリに戻っておきましょう。

$ cd

exenv のインストール

erlenv と同じ要領で次のようなコマンドを順に入力して行きます。注意点は erlenv と同様ですので,コマンドのみ羅列します。

$ git clone https://github.com/mururu/exenv.git $HOME/.exenv
$ git clone https://github.com/mururu/elixir-build.git $HOME/.exenv/plugins/elixir-build
$ echo '# for exenv' >> ~/.bashrc 
$ echo 'export PATH="$HOME/.exenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(exenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

次のコマンドで動作を確かめます。

$ which exenv

次のように表示されればOKです。

/home/(あなたのアカウント)/.exenv/bin/exenv

Elixir のインストール

Elixir のインストールは Erlang に比べたらはるかに楽です。

まず,インストール可能なバージョンを下記のコマンドで確認します。

$ exenv install -list

2018年10月3日現在の最新版は 1.7.3 です。以下,1.7.3 の場合について説明します。他のバージョンを入れる場合にはバージョン番号を適宜修正してください。

インストールは次のように行います。

$ exenv install 1.7.3
$ exenv global 1.7.3

成功したら次のように確認します。

$ elixir -v

次のような表示が出ればOKです。

$ elixir -v
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:40:40] [ds:40:40:10] [async-threads:1] [hipe] [sharing-preserving]

Elixir 1.7.3 (compiled with Erlang/OTP 21)
$
3
3
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
3
3