2012年3月16日金曜日

FreeBSD 9.0RELASEで日本語manを使う



eucJPだと問題無いらしいですが、ja_JP.UTF-8だと日本語manが文字化けします。


その問題に対する、とりあえずのワークアラウンドはできたのでメモ。


まず日本語マニュアルを追加します。ここでインストールした以外の雑多なマニュアルも含めて日本語マニュアルは一般に/usr/shere/man/ja以下にEUC-JPでインストールされます。



pkg_add -r http://home.jp.freebsd.org/%7Ekogane/JMAN9/ja-man-doc-9.0.20120115.tbz


EUC-JPのマニュアルをコピーしてUTF-8に変更します。copy先のディレクトリ名をja_JP.UTF-8にする事で標準搭載のmanによって自動的に認識されるようになります。



cd /usr/share/man
cp -r ja ja_JP.UTF-8
find ja_JP.UTF-8 -name '*.gz' -exec gunzip '{}' ';'
find ja_JP.UTF-8 -name '*.[0-9]' -exec nkf -Ew --overwrite '{}' ';'
find ja_JP.UTF-8 -name '*.[0-9]' -exec gzip '{}' ';'
nkf -Ew --overwrite ja_JP.UTF-8/whatis


manで使われているgroffはバージョンが古く日本語に正常に対応できないっぽいので、portsから新しいバージョンのgroffを入れます。



cd /usr/ports/textproc/groff
make install


新しいgroffを使うように/usr/bin/manを書き換えちゃいます。


#ちなみにmanはFreeBSD9.0以降ではシェルスクリプトで実装されてます。


変更点はgroffを/usr/local/bin/groffに置き換えて gorffに-Tオプションを渡しているところに同様に-Dも渡すだけです。



333c333
< NROFF="$NROFF -T$nroff_dev"
---
> NROFF="$NROFF -D$nroff_dev -T$nroff_dev"
936c936
< NROFF='groff -S -P-h -Wall -mtty-char -man'
---
> NROFF='/usr/local/bin/groff -S -P-h -Wall -mtty-char -man'
940c940
< TROFF='groff -S -man'
---
> TROFF='/usr/local/bin/groff -S -man'


スクリプト系言語でシステムが記述されてると改造が楽でいいですねぇ。OSという性質上シェルスクリプトに限定されてしまうのが残念ですが、LuaをFreeBSDのOS標準搭載のシェルスクリプトとして採用しようだとかいう話も上がったりしたりしてるようですし。だんだん楽しくなっていきそうですね。





0 件のコメント:

コメントを投稿