Tuesday, November 14, 2006

Ubuntsu Linux でのロケール設定

.bash_profile で

LC_ALL=ja_JP.eucJP

というような 設定にしていたのだが、たとえば perl を起動したときに

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "ja_JP:ja:en_GB:en",
LC_ALL = "ja_JP.eucJP",
LC_MESSAGES = "C",
LC_CTYPE = "ja_JP.eucJP",
LANG = "ja_JP.eucJP"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

のような Warning が発生していた。svn コマンドを実行したときも似たようなメッセージが出た。

これは、/usr/lib/locale/ にロケールの定義がないことが原因らしい。デフォルトでは

en_US.utf8/
ja_JP.utf8/

という2つがあり、この中でそれぞれのロケールが定義されている。そこで、/etc/locale.gen ファイルに

ja_JP.eucJP EUC-JP

というエントリを定義して、ルート権限で locale-gen コマンドを実行した。これにより新しく ja_JP.eucjp/ ディレクトリが作成され、先ほどの Warning メッセージは出なくなった。

ただ、最初のうち、local.gen ファイルを編集し、locale-gen コマンドを実行しても ja_JP.eucjp/ は作成されなかった。locale-gen コマンドに直接 ja_JP.eucjp を指定したりして、いろいろ試しているうちに成功した。原因はよく分からない。。。

Saturday, November 11, 2006

Apache2 でアクセス認証を設定したときのディレクトリインデックス表示の変化について

マイサーバに Apache2.0 をセットアップした。Ubuntsu の apt-get でパッケージをインストールしたら、デフォルトで

/~kazu/public_html/

へのアクセスができた。~kazu/public_html/ には DirectoryIndex ディレクティブに指定してある名前のファイルがないのでディレクトリ内がインデックス表示されるようになている。

このディレクトリには、private_html という名前の ~kazu/ へのシンボリックリンクがある。つまり、このリンクをたどれば自分のホームディレクトリへアクセスできるようになっている。

自分のホームは非公開にしたいので、auth_digest モジュールを Apatche に追加し、~kazu/ へ .htaccess ファイルも設定して private_html にアクセスしたときは Digest 認証がかかるようにした。ちなみに以前は Base 認証だったので多少セキュリティレベルが上がっている。

ここでタイトルの件が起こった。private_html に Digest 認証をかけたら public_html/ でのインデックス表示に private_html が表示されなくなったのだ。.htaccess をはずしたり、空の .htaccess をおいたりした場合は、問題なく表示される。

以前、Apache1.3 系列を使っていて、そこで Base 認証をかけていたときは、普通に private_html のリンクがインデックス表示されていたのだが。。。

Apache2 の新機能で認証がかかっているリンク先へのシンボリックリンクはインデックス表示されないようになっているのだろうか?それとも単なるバグなのか?

いったん、その認証がかかったリンク先にアクセスし、また戻ってくると、今度はそのリンクがインデックスに表示されるようになった。。。