Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Cannot set LC_XXX to default locale: No such file or directory

はじめに

ことあるたびに目にする、

Cannot set LC_ALL to default locale: No such file or directory

のメッセージ。検索率の高いエラーメッセージなので、回避策?をここに記す。

解説

locale コマンドを叩いて現在の設定をみてみる。

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C.UTF-8
LANGUAGE=   
LC_CTYPE="C.UTF-8"
LC_NUMERIC=ja_JP.UTF-8                                         
LC_TIME=ja_JP.UTF-8
LC_COLLATE="C.UTF-8"
LC_MONETARY=ja_JP.UTF-8                    
LC_MESSAGES="C.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 が。locale を使用して有効なロケールリストを表示してみる。

$ localectl list-locales
C.UTF-8
en_US.utf8

ja_JP.UTF-8 がない!無いなら追加(コンパイル)。日本人だし。

$ sudo localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
$ localectl list-locales                      
C.UTF-8
en_US.utf8
ja_JP.utf8

ja_JP.utf8 が追加されていることを確認できました。再度 locale コマンドでチェック。

$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_COLLATE="C.UTF-8"
LC_MONETARY=ja_JP.UTF-8
LC_MESSAGES="C.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=

各種ロケール設定は変わってないけど、エラー出てないです。