cloud.vagrant あたりとか kitematic あたりから Docker のコンテナ持ってくて ja_JP.UTF8 をロケール設定すると、たまに以下のようになることがあります。
[vagrant@localhost ~]$ sudo su - root Last login: Mon Aug 6 14:10:20 JST 2018 on pts/0 -bash: warning: setlocale: LC_CTYPE: cannot change locale (ja_JP.utf8): No such file or directory -bash: warning: setlocale: LC_COLLATE: cannot change locale (ja_JP.utf8): No such file or directory -bash: warning: setlocale: LC_MESSAGES: cannot change locale (ja_JP.utf8): No such file or directory -bash: warning: setlocale: LC_NUMERIC: cannot change locale (ja_JP.utf8): No such file or directory -bash: warning: setlocale: LC_TIME: cannot change locale (ja_JP.utf8): No such file or directory
なんとかする。
ロケールの一覧
まずロケールの一覧に対象となる ja_JP.UTF8
が無いのでは?
[root@localhost ~]# 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_AG en_AG.utf8 en_AU en_AU.iso88591 en_AU.utf8 en_BW en_BW.iso88591 en_BW.utf8 en_CA en_CA.iso88591 en_CA.utf8 en_DK en_DK.iso88591 en_DK.utf8 en_GB en_GB.iso88591 en_GB.iso885915 en_GB.utf8 en_HK en_HK.iso88591 en_HK.utf8 en_IE en_IE.iso88591 en_IE.iso885915@euro en_IE.utf8 en_IE@euro en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ en_NZ.iso88591 en_NZ.utf8 en_PH en_PH.iso88591 en_PH.utf8 en_SG en_SG.iso88591 en_SG.utf8 en_US en_US.iso88591 en_US.iso885915 en_US.utf8 en_ZA en_ZA.iso88591 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW en_ZW.iso88591 en_ZW.utf8
ないな!よし!
ロケールを追加する
以下のコマンドで ja_JP.UTF8
を追加して、結果を確認します。
[root@localhost ~]# localedef -f UTF-8 -i ja_JP ja_JP [root@localhost ~]# localectl list-locales | grep -i ja ja_JP ja_JP.utf8
わぁい追加されたぞ。
改めてロケールを変更する
現在のロケールを確認して /etc/locale.conf
を読み込みます。必要なら set-locale を再度実行してください。
[root@localhost ~]# localectl set-locale LANG=ja_JP.utf8 [root@localhost ~]# localectl status System Locale: LANG=ja_JP.utf8 VC Keymap: us X11 Layout: n/a [root@localhost ~]# source /etc/locale.conf
これでおわり
僕は US 配列キーボードマンなのでこれで終了です。日本語配列の 106 キーご利用であったりする場合は、以下の記事をご参考にされると良いかと。
Dockerで立てたCentOS7コンテナの日本語環境とかtimezone設定とか
そもそも en_US.UTF8
でもいいだろ、というか僕も確かに普段はそのようにして運用している派なのですが、某社のプロプライエタリフレームワークが、日本語表示しようと思ったら UTF8
使ってても、サーバのロケールが ja_JP.UTF8
じゃないと、エラーを吐いて動かないという……。アプリケーションが悪いのか、フレームワークそのものが悪いのか、うーん。