36
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-06
  • 環境
    • 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
36
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?