まれな事態だとは思うが、locale -a しても ja_JP.* なロケールが出てこない場合がある。こういうとき、debian だと dpkg-reconfigure locales とか /etc/locale.gen に日本語ロケール書いて logele-gen コマンドでなんとかなるのだが、CentOS の方はどうやるのかさっぱりわからん。RHEL もたぶん同じなんだろうな。
というわけでいろいろ調べてたらどうやら /usr/share/i18n/locales に ja_JP はあるのよね。これを元に ja_JP.UTF-8 なり ja_JP.EUC-JP なりを生成すればいい。
# localedef -f UTF-8 -i ja_JP /usr/lib/locale/ja_JP.UTF-8
-f で charmap を、-i で元の言語を指定し、/usr/lib/locale 以下に置いてあげればいいらしい。
$ locale -a C POSIX en_US en_US.iso88591 en_US.iso885915 en_US.utf8 ja_JP.UTF-8
ちゃんと追加されている。これで LANG などに指定できるようだ。ただこうしても
$ export LC_ALL=ja_JP.UTF-8 -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
というエラーが出てしまう。これはよくわからん。まあメッセージまで日本語にしようとは思わないからいいんだけれども。