試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Mandriva Linux 2010.1上でUTF-8な日本語manページが空白になる件と仮の対処

Mandriva Linux 2010.1上で日本語のmanページ(man-pages-jaパッケージ)が入っているときにその中に含まれるmanページを開こうとすると何も表示されない。Emacsで「M-x woman」とすると普通にUTF-8エンコーディングなmanページとして読めるため、manコマンドとその周辺のコマンドに問題があるようだ。
色々試したところ、nroffコマンドが-mandocjというオプションを受け取ると

$ xzcat /usr/share/man/ja/man1/ci.1.lzma | nroff -c -Tutf8 -c -mandocj | wc -l
0
$ xzcat /usr/share/man/ja/man1/ci.1.lzma | nroff -c -Tutf8 -c -mandocj
$ echo ${?}
1

このように何も出力しない(異常終了している)ようで、かつ、-mandocオプションを代わりに付けると

(注意:UTF-8エンコーディングの端末におけるテスト)
$ xzcat /usr/share/man/ja/man1/ci.1.lzma | nroff -c -Tutf8 -c -mandoc | head
CI(1)                                                                    CI(1)



 名 称
       ci - RCS ファイルにリビジョンをチェックインする

 書 式
       ci [options] file ...

とりあえず整形された出力が出てくるということは分かった。(注:Mandriva Linux 2010.1上ではmanページはLZMA圧縮されており、伸長された中身をxzcatもしくはlzcatで標準出力に出力する)
/etc/man.configの中の-mandocjオプションを指定している部分を修正したところ、manでページは見られるが、ページが開いたときにレイアウトが崩れて読みにくい(スクロールをしてから先頭に戻ると綺麗になる)状態となった。
今度はnroffの出力自体は整形されているため、less側が怪しいと思い、lessのオプション指定の中から-rというオプションを外してみたところ、ところどころに変な空白が入っているように見える部分があるのが気になるが、とりあえずは読めるようにはなった。
ここまでの変更点を下にunified形式で貼り付ける。

--- /etc/man.config.orig
+++ /etc/man.config
@@ -101,7 +101,7 @@
 #
 TROFF		/usr/bin/groff -Tps -mandoc -c
 NROFF		/usr/bin/nroff -c -mandoc
-JNROFF		/usr/bin/nroff -c -Tutf8 -mandocj
+JNROFF		/usr/bin/nroff -c -Tutf8 -mandoc
 EQN		/usr/bin/eqn -Tps
 NEQN		/usr/bin/eqn -Tutf8
 JNEQN		/usr/bin/eqn -Tutf8
@@ -111,8 +111,8 @@
 PIC		/usr/bin/pic
 VGRIND		
 GRAP		
-PAGER		/usr/bin/less -isr
-BROWSER		/usr/bin/less -isr
+PAGER		/usr/bin/less -is
+BROWSER		/usr/bin/less -is
 HTMLPAGER	/bin/cat
 CAT		/bin/cat
 #

ただ、この対処が最善な方法なのかどうかについては分からない。

関連記事:

使用したバージョン:

  • man-pages-ja 20091215-1mdv2010.1
  • groff, groff-for-man 1.20.1-2mdv2010.1
  • man 1.6f-1mdv2010.1
  • less 436-3mdv2010.1