yumコマンドが使えない

この記事を見る前に質問です。
次のコマンドを入力したときこのような結果は出ましたか？

```ruby:コマンド
ping www.google.com
```


```ruby:結果
ping: www.google.com: Name or service not known
```

→この結果が出た場合、名前解決ができていないのでこの記事は有用かもしれません
→このような結果が出てない場合、別の記事を探しましょう

#環境
Amazon Linux 2 AMI

#本記事で解決したい内容

以下のコマンドを入力したときに

```ruby:コマンド
yum install httpd
```
以下のエラー画面が出ないようにする


```ruby:結果
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/core/latest/x86_64/mirror.list error was
14: curl#6 - "Could not resolve host: amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com"


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

```


#試してほしいこと

１．VPCのDNS名前解決・ホスト名有効化の確認
２．サーバーの/etc/resolv.confにDNSサーバーのIPアドレスが記載されているか確認

#１．VPCのDNS名前解決・ホスト名有効化の確認
①VPCのダッシュボードから自分のVPCを選択

②「アクション」>「DNS ホスト名を編集」をクリック
DNS ホスト名の有効化のチェックボックスにチェック
「変更を保存」をクリック

③「アクション」>「DNS 解決を編集」をクリック
DNS 解決の有効化のチェックボックスにチェック

④「変更を保存」をクリック

#２．サーバーの/etc/resolv.confにDNSサーバーのIPアドレスが記載されているか確認

①EC2にログインする

②コマンドを入力

```ruby:コマンド
cat /etc/resolv.conf
```

```ruby:結果
# Generated by NetworkManager
search local
nameserver 8.8.8.8
nameserver 8.8.4.4
```

③上記のような結果が表示がされていない場合、以下コマンドを入力して/etc/resolv.confを編集する
（※されていた場合これ以上この記事を見る必要はないでしょう）

```ruby:コマンド
vi /etc/resolv.conf
```


```ruby:/etc/resolv.conf
# Generated by NetworkManager
search local
nameserver 8.8.8.8
nameserver 8.8.4.4
```

#テスト


以下コマンドを入力

```
ping 8.8.8.8 
```

```ruby:結果
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=104 time=1.60 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=104 time=1.70 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=104 time=1.69 ms
```
以下コマンドを入力

```ruby:コマンド
ping www.google.com
```

```ruby:結果
PING www.google.com (172.217.175.100) 56(84) bytes of data.
64 bytes from nrt20s21-in-f4.1e100.net (172.217.175.100): icmp_seq=1 ttl=105 time=3.67 ms
64 bytes from nrt20s21-in-f4.1e100.net (172.217.175.100): icmp_seq=2 ttl=105 time=1.59 ms
64 bytes from nrt20s21-in-f4.1e100.net (172.217.175.100): icmp_seq=3 ttl=105 time=1.59 ms
64 bytes from nrt20s21-in-f4.1e100.net (172.217.175.100): icmp_seq=4 ttl=105 time=4.83 ms
64 bytes from nrt20s21-in-f4.1e100.net (172.217.175.100): icmp_seq=5 ttl=105 time=1.58 ms
```



以下のコマンドを入力して画像のように最後にcomplete!と出るはず。。。

```ruby:コマンド
yum install httpd
```
画像↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/020ae274-4cad-637c-7c3c-6b1f0482df0f.png)

#補足
・ルートユーザーではないとデフォルトで一部操作権限が与えられていないコマンドがあります。
→適宜sudoコマンドを使って実行して下さい
（今回はviコマンド・yumコマンド）

・一度解決してもEC2を再度立ち上げた際に同様のエラーが発生してしまう場合があります。
→こちらの記事を参考にしてください。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/

※上の記事を見るのが面倒な方は素直に以下のコマンドを順に実行していきましょう
①

```
sudo vi  /etc/dhcp/dhclient.conf
```
②次の１行を追記

```ruby:/etc/dhcp/dhclient.conf
supersede domain-name-servers  8.8.8.8, 8.8.4.4;
```
③

```
sudo vi /etc/sysconfig/network-scripts/ifcfg-*
```
④PEERDNS=yesとなってることを確認

```ruby:/etc/sysconfig/network-scripts/ifcfg-*
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
DHCPV6C=yes
DHCPV6C_OPTIONS=-nw
PERSISTENT_DHCLIENT=yes
RES_OPTIONS="timeout:2 attempts:5"
DHCP_ARP_CHECK=no
```

⑤

```
sudo reboot
```