Snow Leopardで日本語のmanを表示する方法

とりあえずメモ.
あとで書く.

キーワード

  • man.conf
  • groff

概要

  • デフォルトでは環境変数MANPATHは設定されていないけど,デフォルトのPATHに対応するmanの場所は/etc/man.confに(決めうちで)書いてあるので,manが読み込まれるされるようだ.
  • homebrew でnkfとかw3mとかsl入れている
    • nkfw3mは,英語版と日本語版があって,日本語の方はjaっていうディレクトリに入ってる.
      • cat /usr/local/share/man/ja/man1/nkf.1
      • cat /usr/local/share/man/man1/nkf.1
    • slのmanは日本語しか無くて,しかもjaじゃないほうに入ってる
      • cat /usr/local/share/man/man1/sl.1

jaっていうディレクトリにあるほうは,LANGがjaだと読み込まれるようだ.
LANG=C man nkfとかやれば英語の方が表示されるけど,そうしたらなんか文字化けしたので,
LANG=en_US.UTF-8 man nkfとかやると良いようだ.

しかし,これだとせっかくの日本語manが見れないし,man slは文字化けするのでなんとかしてみようと思った

日本語manの文字コードは,eucだったりsjisだったりしてうざいので,あらかじめすべてutf8に変換した.

manではgroffというコマンドが使われている.タイプセッタとかいう,文書整形コマンドのようである.
snow leopardのgroffはutf8で出力するオプションがある癖に,groff -Tutf8ってやってもマルチバイト文字はちゃんと出力できなくて文字化けするみたい.
たとえば,英語のmanだと
groff /usr/share/man/man1/zsh.1 -mandoc -Tutf8
ってやるとmanっぽい整形されたやつが表示されるんだけど,同じようにsl.1を表示したら文字化けしてる.


そこで,じぶんでgroffをビルドします.
groff1.21が最新っぽいけど,そのままビルドしてもだめだった.日本語パッチも無いようだった.
groff1.18.1には日本語パッチがあるので,debianのとこからgroff_1.18.1.1.orig.tar.gzとgroff_1.18.1.1-21.diff.gz
をとってきて,ビルドした.
このgroffでsl.1とか見ると,ちゃんと表示された.(でも,なんか色が付く.とりあえず気にしない)

で,/etc/man.confで
NROFFとか定義しているところに行って,groffのpathを書き換える.オプションも,-Tasciiとかを-Tutf8にしたり,いろいろする,
書き換えるのはgroffだけではだめで,その近くに書いてるやつでEQNっていうやつもTasciiからTutf8にしたり,PAGERをless -Rにしたりすると,日本語manが表示できるようになった.