Amazon Linux AMI に rbenv で Ruby 最新バージョンをインストール (2.3.x)

Rails
このエントリーをはてなブックマークに追加

rbenv の導入準備

複数バージョンの Ruby を切り替えるだけでなく、ローカルディレクトリ毎に Ruby のバージョンを指定できる
「 rbenv 」
$ cd /opt
$ sudo git clone git://github.com/sstephenson/rbenv.git
$ sudo mkdir /opt/rbenv/plugins
$ cd /opt/rbenv/plugins
$ sudo  git clone git://github.com/sstephenson/ruby-build.git
$ sudo vi /etc/profile
export RBENV_ROOT="/opt/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"

ここまででの設定で rbenv が使用できる状態になりました。
ちなみに以下のコマンドにてインストールできる ruby バージョン一覧が確認できます。

# rbenv install -l
Available versions:
  1.8.5-p113
  1.8.5-p114
  1.8.5-p115
  1.8.5-p231
  1.8.5-p52
  1.8.6-p110
...
  2.1.10
  2.2.0-dev
  2.2.0-preview1
  2.2.0-preview2
  2.2.0-rc1
  2.2.0
  2.2.1
  2.2.2
  2.2.3
  2.2.4
  2.2.5
  2.3.0-dev
  2.3.0-preview1
  2.3.0-preview2
  2.3.0
  2.3.1
  2.4.0-dev
  2.4.0-preview1
  2.4.0-preview2
...
  rbx-3.56
  rbx-3.57
  rbx-3.58
  rbx-3.59
  rbx-3.60
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02

ruby の指定バージョンのインストール実験

# rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...

問題発生

ここから問題が発生、rbenv にて Ruby の指定バージョンをインストールしようと試みるのですが インストール途中で止まってしまう。
サーバのスペック不足ではないかなと、負荷を確認するとロードアベレージが 2.0 前後まで上がっている事が確認できました。
現在インストール開始

# rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...

ここから進行しない。。。

再度サーバを確認すると CPU 使用率 99% のプロセスが出現。それと同時にロードアベレージも 5.0 まで上昇!ピンチです。
そのプロセスがこちら。

/usr/libexec/gcc/x86_64-amazon-linux/4.8.2/cc1 -quiet -I /opt/rbenv/versions/2.3.1/include -

yum で必要なライブラリをインストール

幾つかの参考記事では以下のライブラリを事前にインストールしているようでした。

# yum install gcc make openssl-devel readline-devel

しかし、インストールに時間がかかる

その後、再度インストールコマンドを試みたのですが、相変わらず進行しないという状況。

ログを見よう

Google 先生に質問をしていると、以下のディレクトリにインストールログが出力されている事がわかりました。
さっそく覗いてみました。

$ tail -s 0 -f /tmp/ruby-build.20161023214253.32716.log

copying dummy probes.h
compiling main.c
compiling dmydln.c
compiling miniinit.c
compiling dmyext.c
compiling miniprelude.c
compiling array.c
compiling bignum.c
...

インストールは進行していた!

ゆっくりですがコンパイルログが流れているのが確認できます。
インストール作業は進行しておりました。このままそっと進行を見守りましょう。

と、待つこと約1時間

  python-pycurl.x86_64 0:7.19.0-8.7.amzn1                          python-setuptools.noarch 0:0.6.10-3.11.amzn1
  python-sqlite.x86_64 0:2.6.0-1.8.amzn1                           python-urlgrabber.noarch 0:3.9.1-8.9.amzn1
  rpm-python.x86_64 0:4.8.0-16.36.amzn1                            util-linux-ng.x86_64 0:2.17.2-12.13.amzn1
  yum-plugin-security.noarch 0:1.1.30-6.11.amzn1

Complete!
[root@upsnap ruby-build]# yum install gcc make openssl-devel readline-devel
[root@upsnap ruby-build]# rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...
Installed ruby-2.3.1 to /opt/rbenv/versions/2.3.1

インストール終了ました!

インストール確認

# rbenv global 2.3.1

その後、再度シェルログインを行うと

$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

無事、完了しました。

参考