yumコマンドでFailed to set locale, defaulting to Cとなった時の対応方法

- 環境
    - Dockerで作成したコンテナ
    - CentOS Linux release 7.7.1908 (Core)
    - CUI : Xfce
    - xfce4-terminal 0.8.7.4

# 事象 : `yum check`したらなんか言われた
```bash
$ sudo yum check
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, ovl
check all
```

# 原因 : LC_ALLが設定されていないから
[yum実行時に「Failed to set locale, defaulting to C」が表示される。 - Tihiroの頭を休めるIT教室](http://tihiro.hatenablog.com/entry/2017/10/12/075555)

```bash
# 環境変数を確認するとLC_ALLがない
$ printenv | grep LC 
$
```

## 対応 : LC_ALLを設定する
```bash
# 設定して
$ export LC_ALL=C
# 確認して
$ printenv | grep LC
LC_ALL=C
# もう一度やってみる
$ sudo yum check
Loaded plugins: fastestmirror, ovl
check all
```

# 原因 : 設定可能なロケールに設定しているロケールがないから
[RHEL8でコマンド実行時に Failed to set locale, defaulting to C と表示される - Qiita](https://qiita.com/takizawafw6o2o/items/d6a15b5ae05d85ae1f41)

## 状態1 : ロケールに「ja_JP.UTF-8」を設定している
```bash
# 「ja_JP.UTF-8」を設定していても・・・
$ localectl
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: us
      X11 Layout: us

# 「ja_JP.UTF-8」はないと言われている
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
```

## 状態2 : 設定可能なロケールに「ja_JP.UTF-8」はない
```bash
# 設定可能なロケールに「ja_JP.UTF-8」はない
$ localectl list-locales
en_US.utf8

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
POSIX
en_US.utf8

# インストール可能な言語パッケージにもない・・・
$ sudo yum list langpacks-*
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, ovl
Repository google-chrome is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * epel: nrt.edge.kernel.org
 * extras: ty1.mirror.newmediaexpress.com
 * updates: ty1.mirror.newmediaexpress.com
Error: No matching Packages to list
```
## 情報 : DockerでつくったCentOS7には日本語ロケールがなく、設定しても`yum update`すると消えるらしい
Dockerの定義ファイルで`localedef`で日本語を足しているのになぜか日本語ロケールがない、その答えは以下のページにありました。
> Docker の centos:centos7 は `locale -a | grep -c ja_JP` がゼロ、つまり日本語ロケールが定義されていません。
> ...省略...
> glibc-common を `yum update` すると消えてしまいますｗ
> [CentOS 7 コンテナに消えない日本語ロケールを追加する - Qiita](https://qiita.com/teruo-oshida/items/08cb84efc2b581b0a439)

## 対応 : 日本語ロケールを追加する
[cannot change locale をやっつける - ARCHIVESDRIVE HB](https://donbulinux.hatenablog.jp/entry/2018/08/06/143722)

```bash
# 「ja_JP.UTF-8」を追加する
$ sudo localedef -f UTF-8 -i ja_JP ja_JP

# 追加された！
$ localectl list-locales
en_US.utf8
ja_JP
ja_JP.utf8
$ locale -a
C
POSIX
en_US.utf8
ja_JP
ja_JP.utf8

# エラーメッセージが消えた！
$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8

# できた！
$ sudo yum check
Loaded plugins: fastestmirror, ovl
Repository google-chrome is listed more than once in the configuration
check all
```