Posted at

AmazonLinux2 -bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directoryの対応


概要

概要のエラーが発生した際の対象法を残したいと思います

詳しいエラーは下記になります

-bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory

-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory


原因

Ansible経由でyum update実行時に原因不明の接続断により、SSH接続する際に上記のようなエラーが表示されるようになった

後述にありますが、言語ファイルそのものが消えた

根本的な原因は不明です・・・


やったこと


  1. QiitaCentOS7 LC_CTYPE: cannot change locale (UTF-8): No such file or directoryを参考に環境変数を設定してみたが改善できず


  2. localectl set-locale LANG=en_US.utf8を実行しても改善できず


  3. locale -a を実行したところ以下のようにそもそも言語ファイルない!

    > 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
    C.utf8
    POSIX



  4. /usr/lib/locale/locale-archiveがない!



解決法

ちょうど同じ種類のインスタンス(AmazonLinux2)があったので、言語ファイル/usr/lib/locale/locale-archiveを転送して対応した

# 再度locale -aしてみる

> locale -a

aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
aa_ER.utf8
aa_ER.utf8@saaho
aa_ET
aa_ET.utf8
af_ZA
af_ZA.iso88591
af_ZA.utf8
agr_PE
agr_PE.utf8
ak_GH
ak_GH.utf8
am_ET
am_ET.utf8
an_ES
an_ES.iso885915
an_ES.utf8
anp_IN
anp_IN.utf8
ar_AE
ar_AE.iso88596
ar_AE.utf8
ar_BH
~~省略~~

今回は言語ファイルを転送して対応したが、localdefコマンドで生成することで対応も可能なのか?