LANDISK HACKING DIARY
Since2005/8/17
TOPへ戻る

   INDEX
 
1. locale の設定
2. エラーメッセージを英語で表示する
3. 参考文献




 
   locale の設定

今更だが、Localeを正しく設定し、/share 以下にある日本語ファイル名が Windowsとdebian環境、双方の環境で文字化けしないようにする。初めに、デフォルトでは、locales がインストールされていないのでapt-get しておく。

landisk:~# apt-get install locales

次に、debian 環境で使用するデフォルトのlocale をEUC-JP にするのか、UTF-8 にするのかを選択する。これは、samba の/etc/samba/smb.conf で設定したコーディングの設定と同じにする必要がある。筆者の場合は、以下のようにUTF-8に設定してある。LANDISKのデフォルトでは、SJIS でファイルを書き込むので、debian 環境の samba でcharset を UTF-8に設定して起動しているとWindowsからもdebian 環境からも文字化けが発生する。なので、この文字化けを修正するためには、一旦debian環境を抜け、LANDISK環境のsambaを起動させた後、日本語ファイル名のデータをローカルHDDに待避させておく。待避を終えたら、debian 環境でもう1度samba をUTF-8で起動させ、先ほど保存したデータをコピーし直す作業を行う。

[ LANDISK環境の smb.conf ]
  client code page = 932
  coding system = sjis

[ debian 環境の smb.conf ]
  unix charset = UTF-8
  dos charset = CP932
  display charset = UTF-8

ここまでの時点では、debian 環境のsamba はUTF-8 で起動させ、また、/mnt/hda3/share 以下にあるデータも UTF-8 で保存しなおしたことを前提として話しを進めていく。まず、/etc/local.gen を見てみる。通常ならば、ここにはコメントアウトされたもの以外はなにも書き込まれていないはずだ。

landisk:~# cat /etc/locale.gen

以下で、locale の設定を行うことで、/etc/locale.gen には自動で書き込まれるようになる。
locale の設定には2通りの方法がある。両方とも簡単なので覚えておこう。

■dpkg-reconfigureコマンドの場合

dpkg-reconfigure コマンドを実行すると以下のように生成したいロケールを選択する画面になる。とりあえず、ja_JP.EUC-JPとja_JP.UTF-8 を選択しておけばいいだろう。

# dpkg-reconfigure locales
Debian Configuration lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu [?] Configuring Locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x You can choose locales to be generated by selecting locales you want. Selected locales will be saved to x x `/etc/locale.gen' file. You can also manually edit this file. You need to run `locale-gen' after edit the x x file. x x x x Select locales to be generated. x x x x [ ] gl_ES@euro ISO-8859-15 a x x [ ] gv_GB ISO-8859-1 a x x [ ] iw_IL ISO-8859-8 a x x [*] ja_JP.EUC-JP EUC-JP a x x [*] ja_JP.UTF-8 UTF-8 a x x [ ] ka_GE GEORGIAN-PS a x x [ ] kl_GL ISO-8859-1 # x x [ ] ko_KR.EUC-KR EUC-KR a x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

次にデフォルトのlocale を何にするか問われるので、ここでは、ja_JP.UTF-8 を選択しておく。OKを選択してENTERすると、locale の生成が始まる。UTF-8 の生成には4〜5分要した。

   lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu [?] Configuring Locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
   x Many packages in Debian use locales to display text in the correct language for users. The default is C  x
   x but you can change this if you're not a native English speaker.                                          x
   x                                                                                                          x
   x Note: This will reflect the language for your whole system. If you're running a multi-user system where  x
   x not all of your users speak the language of your choice, then they will run into difficulties and you    x
   x might want to leave "C" as the default locale.                                                           x
   x                                                                                                          x
   x These choices are based on which locales you have chosen to generate.                                    x
   x                                                                                                          x
   x Which locale should be the default in the system environment?                                            x
   x                                                                                                          x
   x                                             ja_JP.UTF-8                                                  x
   x                                             Leave alone                                                  x
   x                                             None                                                         x
   x                                             C                                                            x
   x                                             ja_JP.EUC-JP                                                 x
   x                                                                                                          x
   x                                                                                                          x
   x                                                                                                      x
   x                                                                                                          x
   mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj


最後に環境変数LANGを、UTF-8 に変更しておく。これでdebian 環境内で正常に日本語ファイル名を読むことができる。/etc/locale.gen にも以下のように書き込まれるはずだ。

landisk:~# export LANG=ja_JP.UTF-8
landisk:~# cat /etc/locale.gen
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8

■locale-gen コマンドの場合

locale-gen コマンドを使う場合は、直接、/etc/locale.gen を編集する。その後、locale-gen コマンドを実行する。

landisk:~# echo "ja_JP.EUC-JP EUC-JP" >> /etc/locale.gen
landisk:~# echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen
landisk:~# locale-gen

また、ログイン時に自動的に環境変数LANGをexport するように、.profile に以下の行を加えておく。

landisk:~# vi ~/.profile
export LANG=ja_JP.UTF-8
landisk:~# cd /share/disk1
landisk:~# ls
合計 234224
-rwxrwxrwx 1 root root 31078404 5月 17 18:56 【DVD】 つじあやの - お天気娘.mpg*
drwxrwxrwx 2 root root 4096 8月 26 08:04 うくれれ記/
drwxrwxrwx 2 root root 4096 8月 26 06:35 その他アーティスト/
drwxrwxrwx 5 root root 4096 8月 26 07:06 つじあやの関連/
drwxrwxrwx 3 root root 4096 8月 26 07:17 柴田淳/




 
     エラーメッセージを英語で表示する
 
locale コマンドで現在の詳細なロケールが表示されます。注意したいのは、環境変数LC_ALLがセットされている場合は、LC_CTYPEやLC_MESSAGESの元の設定は無効となる。環境変数LC_ALLがセットされていない場合は、LC_CTYPE や LC_MESSAGESのデフォルトの値は環境変数LANGの値となる

landisk:~# locale
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=

以下のようににdeb パッケージをインストールする際に表示されるエラーメッセージなどは日本語よりも英語の方が返って見やすかったりします。

landisk:~# dpkg -i bind9_9.2.4-1_sh4.deb
未選択パッケージ bind9 を選択しています。
(データベースを読み込んでいます... 現在 14124 個のファイルとディレクトリがインストールされています。)
(bind9_9.2.4-1_sh4.deb から) bind9 を展開しています...
未選択パッケージ dnsutils を選択しています。
(dnsutils_9.2.4-1_sh4.deb から) dnsutils を展開しています...
dpkg: 依存関係の問題により bind9 の設定ができません:
bind9 は以下に依存(depends)します: libdns16 ...しかし:
パッケージ libdns16 はインストールされていません。

省略…

パッケージ libisc7 はインストールされていません。
dnsutils は以下に依存(depends)します: liblwres1 ...しかし:
パッケージ liblwres1 はインストールされていません。
dpkg: dnsutils の読み込みエラーです(--install):
依存関係の問題 - 設定を見送ります。
以下のパッケージの処理中にエラーが発生しました:
bind9
dnsutils

このエラーメッセージを英語に設定するには、LC_MESSAGEの値を変更します。但し、man ページも日本語表示されてしまいます。

# export LC_MESSAGES="en_US.UTF-8"

perl で確認した際に以下のようなエラーメッセージが発生する場合は、ロケールが正しい位置に存在しない可能性があります。/usr/lib/locale あるいは、 /usr/share/locale 以下を確認し、使用したいロケールが本当にインストールされているのかどうかを確認しておきましょう。インストールされていない場合は、dpkg-reconfigure locales を実行する。

# perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MESSAGES = "en_US.UTF-8",
LANG = "ja_JP.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").



 
     参考文献
 
■Linux における日本語ロケールに関する指針






TOPへ戻る
 
Copyright © KORO All Rights Reserved.