groff-1.20 と 日本語 man
標準では ja_JP.UTF-8 な環境で文字化けする日本語 man 。標準で入る groff のバージョンでは日本語対応がイマイチだったり、マニュアルが EUC でエンコーディングされていたりするのが原因だったりするようだ。
解決策としては groff のバージョンを古いものに戻すというものがあって、ウチの場合もそうしていた。具体的には /etc/portage/package.mask に >=groff-1.20 なんて書いてあえて古いバージョンの groff を使い、その上で man-pages-ja を入れて man.conf の設定で対処するというものなんだけど、たまたま検索していたら最近の groff でも対処出来るとの記事を見つけた。
コレを読むとこういうことのようだ。
- groff-1.20 未満にして今までと同じようにする
- むしろ 1.20.1-r2 に上げてしまう
ふむ。今までは前者でやってきたけど、バージョンをあげてしまっても解決するらしい。将来的にはそちらの方が望ましいので、この機会にやってみる。
まず groff-1.20.1-r2 のマスクを外す。標準ではキーワードマスクされている。
$ sudo vi /etc/portage/package.keywords =sys-apps/groff-1.20.1-r2 ~amd64 ←追加
んで emerge する。 LINGUAS="ja" を忘れてはいけない。(普通は /etc/make.conf に書いてる)
$ LINGUAS="ja" sudo emerge -av1 groff
次に /etc/man.conf の設定を見直す。自分の環境では設定済。
そして/etc/man.confのJNROFF行などをEUCロケールで起動するように書き替える
http://2chnull.info/r/linux/1255956757/134-134
#JNROFF /usr/bin/groff -Tnippon -mandocj
JNROFF LANG=ja_JP.EUC-JP LC_ALL=ja_JP.EUC-JP /usr/bin/groff -Tnippon -mandocj
最後に、 alias に追加。 man で英語マニュアル、 jman で日本語マニュアルを出力するようにさせる。
alias man='LANG=en_US LC_ALL=en_US /usr/bin/man'
http://2chnull.info/r/linux/1255956757/139-139
alias jman="/usr/bin/man -P \"cat | nkf -w | less\""
日本語のマニュアルは実際結構古いことが多いので、コマンドで使い分けるというこの発想はイイですね。
あとは実際にやってみる。
$ man emerge とか $ jman emerge
よしよし。以前と同様ちゃんと表示できるようになってる!