Ubuntu
Elixir

Elixir 1.0.5がリリースされましたが(Ubuntuでiexがコケる件)

More than 3 years have passed since last update.

Elixir 1.0.5がリリースされ、Ubuntuの場合、Elixirのinstallの説明にあるようにErlang Solutionsのレポジトリを追加しておくと、

# sudo apt-get safe-upgrade

でelixirのアップデートがかかります(amd64/x86の場合)。

The following packages will be upgraded:

elixir
(中略)
Get: 1 http://binaries.erlang-solutions.com/debian/ trusty/contrib elixir amd64 1.0.5-1 [2,059 kB]
Preparing to unpack .../elixir_1.0.5-1_amd64.deb ...
Unpacking elixir (1.0.5-1) over (1.0.4-1) ...

しかし、どうもErlang/OTP 17.5とは相性が悪く…iex

hostname:~$ iex

Erlang/OTP 17 [erts-6.4] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

=ERROR REPORT==== 1-Jul-2015::00:09:43 ===
** gen_event handler 'Elixir.Logger.ErrorHandler' crashed.
** Was installed in error_logger
** Last event was: {info_report,<0.50.0>,
{<0.52.0>,progress,
[{supervisor,{local,'Elixir.Logger.Supervisor'}},
{started,
(中略)
*** ERROR: Shell process terminated! (^G to start new job) ***

=INFO REPORT==== 1-Jul-2015::00:09:43 ===
application: logger
exited: shutdown
type: temporary

エラーになってしまい起動しません。

簡単な解決法はErlang/OTPを18にアップグレードするです。

hoge:~$ wget http://www.erlang.org/download/otp_src_18.0.tar.gz

hoge:~$ tar xzf otp_src_18.0.tar.gz
hoge:~$ cd otp_src_18.0
hoge:~$ ./configure && make
hoge:~$ sudo make install

で/usr/local/bin以下にErlang/OTP 18がインストールされます。Erlangのビルドは思ったより軽い(ビルド時間短め)なので助かります。

hostname:~$ iex

Erlang/OTP 18 [erts-7.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (1.0.5) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

今度は無事に起動しました。