現象:以下の赤字のような、perlのlocaleエラーが出る。
OS:Debian Linux3.1 sarge
perl: warning: Setting locale failed.
LANG = “ja_JP.EUC-JP”
LANGUAGE = “ja_JP:ja:en_GB:en”,
LC_ALL = (unset),
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
perl: warning: Please check that your locale settings:
原因:このホストのロケールの設定がおかしい。サーバ用途等でXを使わないテキストコンソール画面では、通常2バイトコードは使わないため、本来インストール時、言語に日本語(2バイト文字)を選んだ場合は、テキストコンソール用に英文字(1バイト文字)を追加して選択しておくべきであろう。つまり、日本語ja_JP.EUC-JPを日本語localeとして選択するなら、英語en_US.ISO-8859-1をテキストコンソールlocaleとして選択すると良い。
また、元々、設定してあるロケールが /usr/share/locale/locale.alias に無いロケールが設定されている場合も、このような現象が起きる。
対策:現状のlocaleに追加する。次のいずれかの方法でlocaleに en_US ISO-8859-1 を追加する。
対策1)
locale.genファイルを編集。デフォルトをen_US.ISO-8859-1にするため、ja_JP.EUC-JPより上に追加する。
ns:~# vi /etc/locale.gen
en_US ISO-8859-1
ja_JP EUC-JP
追加をlocale-genコマンドで反映させる。
ns:~# locale-gen
デフォルトロケールを設定する。
ns:~# vi /etc/default/locale
LANG=en_US
LANGUAGE=en_US
再起動する。
ns:~# reboot
localeコマンドで設定状態の確認。
ns:~# locale
LANG=en_US
LANGUAGE=en_US
LC_CTYPE=”en_US”
LC_NUMERIC=”en_US”
LC_TIME=”en_US”
LC_COLLATE=”en_US”
LC_MONETARY=”en_US”
LC_MESSAGES=”en_US”
LC_PAPER=”en_US”
LC_NAME=”en_US”
LC_ADDRESS=”en_US”
LC_TELEPHONE=”en_US”
LC_MEASUREMENT=”en_US”
LC_IDENTIFICATION=”en_US”
LC_ALL=
対策2)
メニュー形式のツールでlocaleを追加する。
ns:~# dpkg-reconfigure locales
画面1のようにメニュー形式でen_US.ISO-8859-1を追加する、OKで保存する。
画面2の画面でデフォルトをen_USに設定する。設定し終えたら再起動。
ns:~# reboot
localeコマンドで設定状態の確認。
ns:~# locale
LANG=en_US
LC_CTYPE=”en_US”
LC_NUMERIC=”en_US”
LC_TIME=”en_US”
LC_COLLATE=”en_US”
LC_MONETARY=”en_US”
LC_MESSAGES=”en_US”
LC_PAPER=”en_US”
LC_NAME=”en_US”
LC_ADDRESS=”en_US”
LC_TELEPHONE=”en_US”
LC_MEASUREMENT=”en_US”
LC_IDENTIFICATION=”en_US”
LC_ALL=
対策1、対策2共通)
ns:~# vi .profile
# ~/.profile: executed by Bourne-compatible login shells.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
mesg n
# Installed by Debian Installer:
# no localization for root because ja_JP.UTF-8
# cannot be properly displayed at the Linux console
LANG=en_US ←追加
LANGUAGE=en_US ←追加
LC_ALL=en_US ←追加
以上
コメント