びぃえるくぅと。

ガラケーは打楽器。

EC2 の Amazon Linux 2 で rbenv を使わずに Ruby 2.4 を入れる (おまけに Node.js)

気づいたら Amazon Linux のメジャーバージョン(?) が 2 になっていたんですね。おめでとうございます。

面倒なので rbenv 使わず新しい Ruby を入れたい

さて Yahoo! とかで Amazon Linux ruby 2.4 とかで検索してみると、ほとんどの記事が rbenv を使ってインストールしているのですが、 まぁ面倒だしせっかくなのでなんとか rbenv を使わずに完結させたいと思った次第です。

検索結果をよく見てみると AWS 公式の記事があったので見てみると

aws.amazon.com

Ruby 2.4 – 2.4 シリーズの最新バージョン Ruby が利用可能になりました。次のようにインストールします。

$ sudo yum install ruby24

なんだぁ yum でインストールできるんじゃ〜んとか思って意気揚々とコマンドを叩くと

[ec2-user@ip-x-x-x-x ~]$ yum search ruby24
Loaded plugins: langpacks, priorities, update-motd
Warning: No matches found for: ruby24
No matches found

おらんのです。

(ちょっと話題から逸れて) 2つの Amazon Linux

docs.aws.amazon.com

AWS には、2 つのバージョンの Amazon Linux: Amazon Linux 2 および Amazon Linux AMI が用意されています。

なるほどさっきのは Amazon Linux AMI を対象とした記事だったんですね。初見殺し。

僕が動かしてるインスタンスAmazon Linux 2 の方なので単純に yum では入れられないようです。 AMI 版(?) の方はおそらく yum でインストールできるようになっていると思われます。

Extras Library

ですが Amazon Linux 2 になってから Extras Library という仕組みが作られたようです。 どういう仕組みで動いているかは把握していませんが amazon-linux-extras コマンドで追加のソフトをインストールすることができます。

2018/02/04 現在で Extras Library 経由でインストールできる トピック (と呼ぶそうです) の一覧を出力してみると

$ amazon-linux-extras list
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]
  2  memcached1.5   disabled  [ =1.5.1 ]
  3  nginx1.12   disabled  [ =1.12.2 ]
  4  postgresql9.6   disabled  [ =9.6.6 ]
  5  python3   disabled  [ =3.6.2 ]
  6  redis4.0   disabled  [ =4.0.5 ]
  7  R3.4   disabled  [ =3.4.3 ]
  8  rust1   disabled  [ =1.22.1 ]
  9  vim   disabled  [ =8.0 ]
 10  golang1.9   disabled  [ =1.9.2 ]
 11  ruby2.4  disabled  [ =2.4.2 ]
 12  nano   disabled  [ =2.9.1 ]
 13  php7.2   disabled  [ =7.2.0 ]
 14  lamp-mariadb10.2-php7.2   disabled  [ =10.2.10_7.2.0 ]

想定したよりも利用可能なトピックは少なかったですが、主要なアプリケーションの最新バージョンが一通り揃っています。 yum でインストールできるバージョンと比較してみると以下の通りになりました。(これも 2018/02/04 現在)

パッケージ (トピック) yum での最新 extras での最新
Ansible N/A 2.4.2
Emacs 24.3 25.3
Memcached 1.4.15 1.5.1
Nginx N/A 1.12.2
PostgreSQL 9.2.23 9.6.6
Python 3 N/A(?) 3.6.2
Redis N/A 4.0.5
R言語 N/A(?) 3.4
Rust N/A 1.22.1
Vim 7.4 (インストール済) 8.0
Go言語 1.8.3 1.9.2
Ruby 2.0.0 2.4.2
Nano 2.3.1 (インストール済) 2.9.1
PHP 5.4.16 7.2.0

Ruby 2.4.x をインストール

ということで Extras Library を経由して Ruby 2.4 をインストールします。

$ sudo amazon-linux-extras install ruby

細かいバージョン指定もできるようなので、EC2 のドキュメントを是非チェックしてみてください。 これで Ruby 2.4 + Gem が使えるようになりました。

[ec2-user@ip-x-x-x-x ~]$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
[ec2-user@ip-x-x-x-x ~]$ which ruby
/usr/bin/ruby
[ec2-user@ip-x-x-x-x ~]$ gem -v
2.6.13
[ec2-user@ip-x-x-x-x ~]$ which gem
/usr/bin/gem

めでたし。

(番外編) そういえば Node.js はどうやって入れたら良いの?

[ec2-user@ip-x-x-x-x ~]$ amazon-linux-extras list | grep node
[ec2-user@ip-x-x-x-x ~]$

・・・。

[ec2-user@ip-x-x-x-x ~]$ yum search nodejs
Loaded plugins: langpacks, priorities, update-motd
=== Matched: nodejs ===
http-parser.x86_64 : HTTP request/response parser for C
http-parser-devel.x86_64 : Development headers and libraries for http-parser
[ec2-user@ip-x-x-x-x ~]$

・・・・・・・・・・・・・・。

正解は

パッケージマネージャを利用した Node.js のインストール | Node.js

こちらを参考にしてみてください(丸投げ)。なるほどリポジトリを追加するんですね。分かるか。

Copyright © 2015 Yadex205