EC2にyumでnodejsをインストールしようとしたらできなかった話

#はじめに
右も左も分からない状態で、AWSにRailsアプリをデプロイする過程で躓いたときの話
##epel（？）レポジトリが見つからないと言われエラーになる。
リポジトリが見つからないと言われる。

```:実際のコード
[tatsuki@ip-10-0-0-85 ~]$ sudo yum install nodejs npm --enablerepo=epel
[sudo] tatsuki のパスワード:
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd


Error getting repository data for epel, repository not found
```
##epelリポジトリをインストール
epelリポジトリインストールについて調べ、以下を実行。

```
[tatsuki@ip-10-0-0-85 ~]$ yum -y install epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
このコマンドを実行するには root である必要があります。
```
このコマンドを実行するには root である必要があります。と言われ
「あー、ユーザー権限？じゃないと実行できないのか」と思ったので、以下を実行。

```
[tatsuki@ip-10-0-0-85 ~]$ sudo yum -y install epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                    | 2.4 kB  00:00:00
パッケージ epel-release は利用できません。
エラー: 何もしません


epel-release is available in Amazon Linux Extra topic "epel"

To use, run
# sudo amazon-linux-extras install epel

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
```
また、エラー。翻訳すると
「epel-releaseはAmazon Linux Extra epel で利用可能だから、`sudo amazon-linux-extras install epel`これを使うといいよ」と言われたので。以下実行。

```
[tatsuki@ip-10-0-0-85 ~]$ sudo amazon-linux-extras install epel
[sudo] tatsuki のパスワード:
Installing epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-epel
10 個の metadata ファイルを削除しました
4 個の sqlite ファイルを削除しました
0 個の metadata ファイルを削除しました
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                    | 2.4 kB  00:00:00
amzn2extra-docker                                                             | 1.3 kB  00:00:00
amzn2extra-epel                                                               | 1.3 kB  00:00:00
(1/5): amzn2-core/2/x86_64/group_gz                                           | 2.6 kB  00:00:00
(2/5): amzn2-core/2/x86_64/updateinfo                                         | 159 kB  00:00:00
(3/5): amzn2extra-epel/2/x86_64/primary_db                                    | 1.8 kB  00:00:00
(4/5): amzn2extra-docker/2/x86_64/primary_db                                  |  56 kB  00:00:00
(5/5): amzn2-core/2/x86_64/primary_db                                         |  34 MB  00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=====================================================================================================
 Package                   アーキテクチャー    バージョン         リポジトリー                  容量
=====================================================================================================
インストール中:
 epel-release              noarch              7-11               amzn2extra-epel               15 k

トランザクションの要約
=====================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 15 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-11.noarch.rpm                                                  |  15 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-11.noarch                                             1/1
  検証中                  : epel-release-7-11.noarch                                             1/1

インストール:
  epel-release.noarch 0:7-11

完了しました!
  0  ansible2                 available    [ =2.4.2  =2.4.6  =2.8 ]
  2  httpd_modules            available    [ =1.0 ]
  3  memcached1.5             available    [ =1.5.1  =1.5.16 ]
  5  postgresql9.6            available    [ =9.6.6  =9.6.8 ]
  6  postgresql10             available    [ =10 ]
  8  redis4.0                 available    [ =4.0.5  =4.0.10 ]
  9  R3.4                     available    [ =3.4.3 ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0 ]
 11  vim                      available    [ =8.0 ]
 13  ruby2.4                  available    [ =2.4.2  =2.4.4  =2.4.7 ]
 15  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22 ]
 16  php7.1                   available    \
        [ =7.1.22  =7.1.25  =7.1.27  =7.1.28  =7.1.30  =7.1.31
          =7.1.32 ]
 17  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.21  =10.2.10_7.2.22 ]
 18  libreoffice              available    [ =5.0.6.2_15  =5.3.6.1 ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1 ]
 21  mate-desktop1.x          available    [ =1.19.0  =1.20.0 ]
 22  GraphicsMagick1.3        available    [ =1.3.29  =1.3.32 ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42 ]
 24  epel=latest              enabled      [ =7.11 ]
 25  testing                  available    [ =1.0 ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    \
        [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232 ]
 28  firecracker              available    [ =0.11 ]
 29  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13 ]
 30  squid4                   available    [ =4 ]
 31  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9 ]
 32  lustre2.10               available    [ =2.10.5 ]
 33  java-openjdk11           available    [ =11 ]
 34  lynis                    available    [ =stable ]
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x ]
 37  mono                     available    [ =5.x ]
 38  nginx1                   available    [ =stable ]
 39  ruby2.6                  available    [ =2.6 ]
 40  mock                     available    [ =stable ]
```
とりあえず、epel-releaseをインストールすることに成功！
##もう一度、nodejsをインストールしてみる。
```
[tatsuki@ip-10-0-0-85 ~]$ sudo yum install nodejs npm --enablerepo=epel
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
189 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ nodejs.x86_64 1:6.17.1-1.el7 を インストール
--> 依存性の処理をしています: libuv >= 1:1.9.1 のパッケージ: 1:nodejs-6.17.1-1.el7.x86_64
--> 依存性の処理をしています: libuv.so.1()(64bit) のパッケージ: 1:nodejs-6.17.1-1.el7.x86_64
---> パッケージ npm.x86_64 1:3.10.10-1.6.17.1.1.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ libuv.x86_64 1:1.23.2-1.amzn2.0.2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=====================================================================================================
 Package           アーキテクチャー  バージョン                          リポジトリー           容量
=====================================================================================================
インストール中:
 nodejs            x86_64            1:6.17.1-1.el7                      epel                  4.7 M
 npm               x86_64            1:3.10.10-1.6.17.1.1.el7            epel                  2.5 M
依存性関連でのインストールをします:
 libuv             x86_64            1:1.23.2-1.amzn2.0.2                amzn2-core            129 k

トランザクションの要約
=====================================================================================================
インストール  2 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 7.3 M
インストール容量: 26 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): libuv-1.23.2-1.amzn2.0.2.x86_64.rpm                                    | 129 kB  00:00:00
warning: /var/cache/yum/x86_64/2/epel/packages/nodejs-6.17.1-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
nodejs-6.17.1-1.el7.x86_64.rpm の公開鍵がインストールされていません
(2/3): nodejs-6.17.1-1.el7.x86_64.rpm                                         | 4.7 MB  00:00:00
(3/3): npm-3.10.10-1.6.17.1.1.el7.x86_64.rpm                                  | 2.5 MB  00:00:00
-----------------------------------------------------------------------------------------------------
合計                                                                  24 MB/s | 7.3 MB  00:00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-11.noarch (@amzn2extra-epel)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
上記の処理を行います。よろしいでしょうか？ [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:libuv-1.23.2-1.amzn2.0.2.x86_64                                    1/3
  インストール中          : 1:nodejs-6.17.1-1.el7.x86_64                                         2/3
  インストール中          : 1:npm-3.10.10-1.6.17.1.1.el7.x86_64                                  3/3
  検証中                  : 1:npm-3.10.10-1.6.17.1.1.el7.x86_64                                  1/3
  検証中                  : 1:nodejs-6.17.1-1.el7.x86_64                                         2/3
  検証中                  : 1:libuv-1.23.2-1.amzn2.0.2.x86_64                                    3/3

インストール:
  nodejs.x86_64 1:6.17.1-1.el7                  npm.x86_64 1:3.10.10-1.6.17.1.1.el7

依存性関連をインストールしました:
  libuv.x86_64 1:1.23.2-1.amzn2.0.2

完了しました!
```
無事通りました！
#まとめ、感じたこと
無料版のAmazon Linux だったからyumでが提供されてなかった