Linux(CentOS)でlocaleのエラーが出た
出たので調べた。
環境
OS X 上の Vagrant/VirtualBox 上の CentOS。
$ cat /etc/redhat-release CentOS release 6.5 (Final) $ arch x86_64 $ uname -a Linux vagrant-centos65.vagrantup.com 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
参考:CentOSのバージョン確認コマンドとアーキテクチャ確認コマンド | mawatari.jp
事象
yumコマンドとかlocaleコマンドとかいろいろなコマンドの実行時に以下のようなエラーが出ていた。
$ 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=
原因
localeのLC_*に設定されているja_JP.UTF-8がシステムに無い。
Macではデフォルトでssh時にMac上のLC_*の設定を接続先に送るようになってる(/etc/ssh_config
内のSendEnv LANG LC_*
)ため、Mac上でja_JP.UTF-8
になってると上記のようになる。
参考:Mac から Ubuntu に ssh ログインするとなんかロケール云々で怒られるやつ - 休刊 ボルシチは食べ物です。
対策
以下で解決した。
$ sudo yum update glibc-common
参考:開発機の仮想マシンで locale が怒られる - @Konboi memo
上のエラー文字列で調べるといろいろヒットして、
とかいくつか解決法が見つかって、確かにこれらでも解決する(下だけ試した)んだけど、なんとなく本来的な解決法じゃないような気がした。(好みの問題かもしれない)
で、どうしよっかなーと思ってたら上のglibc-commonをアップデートしたらいいというページを見つけたのでこれだ!って思った。
要は最初からsudo yum update -y
しとけばよかったんだな。
そもそもlocaleって?
ちゃんと調べたことなかったので、この際に調べてみた。
ロケールとは、ソフトウェアに内蔵される、言語や国・地域ごとに異なる単位、記号、日付、通貨などの表記規則の集合。または単に、利用する言語や国・地域の指定。多くのソフトウェアやプログラミング言語は、使用する言語とともにロケールを設定し、ロケールで定められた方式に基づいてデータの表記や処理を行う。
LC_ALLを設定するとLC_CTYPEなどの個別の設定を全部上書きする。LC_ALLも個別のLC_CTYPEなども設定されていない場合、LANGの値が使用される。
LC_CTYPEとかLC_NUMERICとかのそれぞれ意味は以下のリンクを参照。
Linux Hacks:環境変数によるロケールの管理 (1/2) - ITmedia エンタープライズ
ロケール名は以下の形式になる。
language(_territory)(.encoding)(@modifier)
ja_JP.UTF-8
だと、languageがja、territoryがJP、encodingがUTF-8になる。@modifierが何かとかは上のリンク参考。
"C"ロケールは、
Cロケールとしてもよく知られているPOSIXロケールは、伝統的なUNIX環境を設定するもので、ASCIIエンコーディング、POSIX文字クラス、米国英語の日時、数、通貨の書式を用いる。
とのこと。
localeコマンドの簡単な使い方は以下の通り。
ほか
今回自分はやらなかったけど、manの内容とかも日本語化したければ以下のページが参考になりそう。
VagrantのCentOSを日本語化してみる - yk5656 diary
Linuxシステム[実践]入門 (Software Design plus)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る
新Linux/UNIX入門 第3版 (林晴比古実用マスターシリーズ)
- 作者: 林晴比古
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/07/04
- メディア: 大型本
- クリック: 4回
- この商品を含むブログ (8件) を見る