Nukino's memorandum

とあるソフト屋の覚え書き

Cygwinで日本語manのレイアウト崩れを直す

2012/02/08 追記→詳細

Cygwin1.7.9において

/etc/man.conf

JNROFF		/usr/bin/groff -DeucJP -Tutf8 -mandoc

と記述すれば、日本語manが表示されるが、レイアウトが崩れるので、これを修正しようと試みた

個人的にバージョンダウンとかは嫌いなので、新しいバージョン、新しいツールを導入する方向。

groff 1.21のインストール

別マシンにインストールしてあるUbuntu 11.10では日本語manのレイアウト崩れは起こっていない。 そこでgroffのバージョンを確認すると1.21となっていたので、バージョンアップすればいけんじゃね?

ということでインストールしてみた。

手法としては

  1. 旧バージョンと共存させる
  2. 新バージョンに完全に置き換える

の2つがあると思う。

「倒れるときは前のめり」というモットーの元?、私は「2.」で行くことにする(とか何とか言いつつしっかり C:\Cygwinはバックアップ取っといたけど)

インストールの前に

gcc4、make辺りは必要だと思うので、インストールしてないなら、インストールしておく。

また、新バージョンに置き換える場合はgroffをアンインストールしておく(groff-coreもいらんかも)。

apt-cyg install gcc4 make
apt-cyg remove groff

apt-cygを導入してない場合はsetup.exeを使用する。apt-cygの導入方法についてはここ参照。

インストール

Cygwinのパッケージはないので、ソースコードからビルドする。

wget ftp://ftp.ring.gr.jp/pub/GNU/groff/groff-1.21.tar.gz
tar -zxvf groff-1.21.tar.gz
cd groff-1.21
./configure --prefix=/usr
make
make install

旧バージョンと共存させる場合は./configureの際のprefixを変える(指定しなければ/usr/localみたい)。 また、/etc/man.confを編集しておくこと(置き換えの場合は不要)

一応

which groff
groff --version

として、きちんとインストールされてるのを確認しておく。

スクリーンショット

man manとしたときの比較

変更前(groff 1.20.1)

img00

変更後(groff 1.21)

img01

だいぶましになったが、特に英語と日本語が混じっている行がおかしいのと、インデントの効いていない行があ る(スクリーンショット内にはないけど、ウィンドウサイズを79x24にして、下の方にスクロールしたら確認でき ると思う)。

man-dbのインストール

再びUbuntu 11.10にて、manのバージョンを確認すると2.6.0.2だった。Cygwinのバージョン(1.6g)とだいぶ違う。

どうやらUbuntu 11.10に入ってるmanのパッケージ名は正確にはman-dbというらしい

man-dbは何か設定方法が違うっぽい(/etc/manpath.confしかない??)が、設定項目がないと言うことはデ フォルトで使えるようになってるんだろう。ということで、とりあえずインストールしてみる。

準備

まずはmanをアンインストール。あとDBのライブラリが必要なのでインストールする。 Ubuntu man-dbの依存関係を見ると、gdbmがいいのかな? (db4.5でもconfigureまで通るのは確認した)

apt-cyg remove man
apt-cyg install libgdbm-devel

また、libpipelineというライブラリがいるみたいだが、Cygwinのパッケージにはない。ググると http://fd0.x0.to/cygwin/というところにあったので、これを使用する (いいのかな?)

apt-cyg -m http://fd0.x0.to/cygwin/ install libpipeline-devel

インストール

man-db 2.6.0.2のソースコードをダウンロード。

http://download.savannah.gnu.org/releases/man-db/man-db-2.6.0.2.tar.gz
が公式っぽいので、そこからダウンロードしようとしたけど、出来なかったので、
http://sourceforge.jp/projects/sfnet_buluoos/downloads/0.3/src/man-db-2.6.0.2.tar.gz/
からダウンロード。

$ cd <man-db-2.6.0.2.tar.gzのあるディレクトリ>
$ tar -zxvf man-db-2.6.0.2.tar.gz
$ PKG_CONFIG=/usr/bin/true \
    libpipeline_CFLAGS='' \
    libpipeline_LIBS='-lpipeline' \
    ./configure --prefix=/usr --libexecdir=/usr/lib \
    --docdir=/usr/share/doc/man-db-2.6.0.2 --sysconfdir=/etc \
    --disable-setuid --with-browser=/usr/bin/lynx \
    --with-vgrind=/usr/bin/vgrind --with-grap=/usr/bin/grap
$ make
$ make install

DBのライブラリ(ヘッダーなど含む)が複数ある場合はgdbm→db5→db4→・・・の順でヘッダファイルを検索するみたい。 特定したい場合はconfigureで--with-db=db4とか指定すればいいみたい(未確認)。

参考ページによるとmake checkとしたらきちんとmakeされてるかどうかを確認できるらしいので、不安なら make installの前に確認する。

一応

which man
man --version

としてインストールを確認。

参考ページ
http://lfsbookja.sourceforge.jp/7.0.ja/chapter06/man-db.html

スクリーンショット

man manしたときのスクリーンショット

img02

びゅーてほー

あと、manのマニュアルがman-dbのものに自動的に切り替わってる。素晴らしい。

設定ファイルは/etc/man_db.conf。全く設定せずに上記の画面が出た。やっぱりこうでなくっちゃ。

追記(2012/02/08)

JM Projectの日本語ドキュメントを/usr/share/man/ja_JP.UTF-8などに インストールしていると、man lsなどとしたときに文字が化ける。

ディレクトリ名をja_JP.UTF8ja_JP.EUC-JPにすると直るが、若干レイアウトがずれる( 変更後(groff 1.21)のような感じ)。

ディレクトリ名を色々いじってみると、jaとすると正常に表示される。 man -dでデバッグ出力して比較してみたが、特に違いはなかった。原因不明。

とりあえず直ればいいので、日本語ドキュメントは /usr/local/share/man/jaに移動させた。 (なんとなくデフォルトのjaディレクトリに上書き(マージ)するのは嫌だったので)

Comments