[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:01632] Re: rc.local?



やなぎはらです。

From: NABETANI Hidenobu <nabetani@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Message-ID: <199708251213.VAA02724@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>

nabetani> >     ・perlを動かすと、
nabetani> > 
nabetani> >         perl: warning: Setting locale failed for the categories:
nabetani> >                 LC_CTYPE LC_COLLATE 
nabetani> >         perl: warning: Please check that your locale settings:
nabetani> >                 LC_ALL = (unset),
nabetani> >                 LC_CTYPE = (unset),
nabetani> >                 LC_COLLATE = (unset),
nabetani> >                 LANG = "ja_JP.ujis"
nabetani> >             are supported and installed on your system.
nabetani> >         perl: warning: Falling back to the "C" locale.
nabetani> > 
nabetani> >      というメッセージがでる。未解決。
nabetani> 
nabetani> LC_ALL=C
nabetani> LC_CTYPE=C
nabetani> LANG=ja_JP.ujis 
nabetani> 
nabetani> に環境変数を設定することで、メッセージは出なくなるはずです。それ以外は
nabetani> 特にいじってません。

こうすると、man-db-ja_2.3.10-39.3 では、日本語manデータの参照が
できなくなります。

man では、 もともと LC_MESSAGES 環境変数をチェックしていました。
しかし、ja_JP.ujis の localeファイルが存在しないため、
setlocale(LC_MESSAGES, "")では、正常に終了しないのです。

manは、setlocale()の戻り値を internal_locale として使うのですが、
上記の理由で、manではja_JP.ujisは使われません。

で、仕方なく LANG=ja_JP.ujisでかつ setlocale() の戻り値が NULL の
場合のみ LANGを internal_locale として用いるように改造しました。

こういうことになっているので、LC_ALL=C が設定されると、
setlocale()の戻り値として "C" を返し、LANGは参照されないのです。

ちなみに、man -L<locale_name> で指定した locale も優先されます。

ちなみに、locale は、

	1. LC_ALLでセットされているもの
	2. LC_xxでセットされているもの
	3. LANGでセットされているもの

という順番で決定されます。


もっと賢い改造方法があれば、フォローしてください。

#localeファイルができあがると、ま〜るいおさまる。

+-----------------------------------------------------------------------+
 Yoshiaki Yanagihara	       Debian JP Project
 E-mail: yochi@xxxxxxxxxxx     [Japanese] http://www.debian.linux.or.jp/
         yosiaki@debian.org    [English ] Sorry, now under construction.