EC2 の Amazon Linux 2 で rbenv を使わずに Ruby 2.4 を入れる (おまけに Node.js)
気づいたら Amazon Linux のメジャーバージョン(?) が 2
になっていたんですね。おめでとうございます。
面倒なので rbenv 使わず新しい Ruby を入れたい
さて Yahoo! とかで Amazon Linux ruby 2.4
とかで検索してみると、ほとんどの記事が rbenv を使ってインストールしているのですが、
まぁ面倒だしせっかくなのでなんとか rbenv を使わずに完結させたいと思った次第です。
検索結果をよく見てみると AWS 公式の記事があったので見てみると
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
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
こちらを参考にしてみてください(丸投げ)。なるほどリポジトリを追加するんですね。分かるか。