- 環境
- Dockerで作成したコンテナ
- CentOS Linux release 7.7.1908 (Core)
- CUI : Xfce
- xfce4-terminal 0.8.7.4
事象 : yum check
したらなんか言われた
$ 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教室
# 環境変数を確認するとLC_ALLがない
$ printenv | grep LC
$
対応 : LC_ALLを設定する
# 設定して
$ 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
状態1 : ロケールに「ja_JP.UTF-8」を設定している
# 「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」はない
# 設定可能なロケールに「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
すると消えてしまいますw
CentOS 7 コンテナに消えない日本語ロケールを追加する - Qiita
対応 : 日本語ロケールを追加する
cannot change locale をやっつける - ARCHIVESDRIVE HB
# 「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