2007年10月18日木曜日

TeX — xdvi のインストール (3) 裏話

 またもや愚痴.
 xdvi が動くようになるまでにはさんざん苦労させられ,時間を浪費する羽目になった.くたびれ損のまま終わるのも癪なので,その顛末を記しておく(書いたら書いたでまた余計な時間を使ってしまうことになるが).後日役に立てば儲けモノ.

■ xdvik-22.40v のケース

 初めて xdvi のインストールを試みた際に freetype の件でつまずいてしまったが,ログを残さなかったので何が悪かったのか今となっては調べようがない.そこで,まずは freetype を使わない設定でインストールしてみようと考えた.
 freetype を使わない場合の選択肢としては,代わりに VFlib を使うか(こちらが本来の仕様)あるいはどちらも使わず PK フォントで行くか,の2つがある.そこで,まずはライブラリを必要としない「PK フォントによる表示」の設定でコンパイルしてみる事にした.この場合,configure のオプションには
   --without-vflib
を指定すればよい(xdvik-22.40v-j1.17.patch の中身参照).
 このコンパイルは成功したが,できた xdvi を使って日本語フォントを含む dvi ファイルを開いてみると,xdvi が PK フォントを作るために呼んだ外部コマンドがうまく動作しない.フォントマップの設定が誤っているのだと思うが,しばし取り組んでみたものの上手くいかないので深追いをやめる.

 次は VFlib を使う設定で再インストールしてみることに.そのためには VFlib をまずインストールしなければならない.VFlib には2と3があり,最新版はそれぞれ VFlib2-2.25.6,VFlib3-3.6.11 である.
 まずは VFlib2-2.25.6 のインストールを試みるが,configure の段階でいきなりコケる.マシンタイプ powerpc-apple-darwin8.0 が理解できないようだ.configure の中身を眺め回した結果,マシンタイプは configure.guess で調べていることが判明.さらに,このプログラムは Free Software Foundation のフリーウェアだと分かる.どうやらインストール向け汎用ソフトらしい.
 そこで,xdvik-22.40v の作業用ディレクトリを覗いてみると,ここにもあった.しかもこっちの方がバージョンが上.ということで,xdvik-22.40v に付属の configure.guess をコピーして使ってみたところ,上手くいった.
 ところが,再び別のエラーでコンパイルが止まる.今度は configure.sub というアプリケーションがひっかかっていた.これも configure.guess と同じく汎用ソフトらしいので同様に対処.この結果,./configure は通るようになった.
 しかし,結局 make には失敗.
  fman.c:483: error: invalid storage class for function 'ReturnCache'
というエラーが出てコンパイルできない.

 あきらめて VFlib3-3.6.11 にトライしてみるが,こちらもやはり configure できなかったので,configure.guessconfigure.sub を上位バージョンに置き換えて再度以下の様に configure
   ./configure --with-kpathsea \
    --with-kpathsea-includedir=/usr/local/teTeX/include \
    --with-kpathsea-libdir=/usr/local/teTeX/lib
 これで configure は無事通ったが,make の方は
  /usr/bin/ld: can't locate file for: -lintl
なるエラーでコンパイルに失敗する.intlfind してみるがなにも見つからず.ここで頓挫.

 VFlib の configure で最初にコケた時点から,他の人はちゃんとインストールできたのか気になって色々検索していたが「あらかじめインストールしておく」程度の記述が散見される程度(例えば iTeX : ISSP TeX Distributuion Packagemakelog/pLaTeX).皆何のトラブルも無くインストールできているらしい.
 しかし変だ. VFlib3-3.6.11 に添付されている configure.guess が Mac に対応していない事を誰も書いていないのはなぜなのか.「あらかじめインストール」した人はどうやってコンパイルに成功したというのか.そもそも,VFlib の本家サイトが消失しているというのが解せない.

 しつこく検索していたところ,2ch の UNIX 板(過去ログ)に以下の記述を発見.
   67 名前:名無しさん@お腹いっぱい。 :02/10/16 11:22
    >>57 >>61-62
    METAFONTとかVFLIBとかもうobsoleteなんだけど
    そういう最新(?)情報って少なかったりするからねえ。

 何だって? 2002年の時点で obsolete だというのか? VFlib の機能はどこに吸収あるいは代替されたというのだろう.訳が分からない.「最新(?)情報が少ない」というよりも,久しぶりに UNIX に触れた僕にとっては「皆無」である.情報が離散していて時系列も無茶苦茶なので(日付の無いページが多いのは非常に困り者だ)後追いする方は大変なのだ.オープンソースが持つ最大の欠点にまたもや振り回された.

 とにかく,これ以上 VFlib にかかずらわるのはやめた方が良さそうだ.という訳で,freetype を使う設定で xdvi をコンパイルすることにした.
 ただし,TeXのインストール ー PukiWiki には,“Mac OS X 10.3 の場合,必ず OS 付属の X11 に同梱されている freetype を使うようにしなければならない”といった意味の記述があるので(でないと,日本語が表示されないらしい),/usr/X11R6/ の下にある freetype を使ってコンパイルする方針で行く.

 しかし,

./configure --prefix=/usr/local/teTeX --disable-multiplatform
--enable-freetype --with-xdvi-x-toolkit=xaw3d



22.84.8
./configure --prefix=/usr/local/teTeX \
--enable-freetype --disable-multiplatform \
--mandir='${prefix}/man' --with-xdvi-x-toolkit=xaw3d

2 件のコメント:

Level3 さんのコメント...

>fman.c:483: error: invalid storage class for function 'ReturnCache'
というエラーが出てコンパイルできない.

OSX10.4.11でFVlib2-2.25.6をコンパイルしようとしてこのページを見付けました.
fman.cのコンパイルエラーは非常に単純なもので関数のプロトタイプ宣言を行なうだけで回避できました.
ソースの最初の方に
Private void ReturnCache();
Private int LRUPutTop2();
を書いてエラーとなる関数内での宣言をコメントアウトするだけでokでした.
あとtools/disol.cでもエラーが出ますが,これはvarargs.hを#includeしないようにコメントアウトするだけでした.
これでコンパイルは通りました.動作テストはしてませんが.

Level3 さんのコメント...

すみません.もうひとつsrc/VF_FNTWV.cでも同様のプロトタイプ宣言の修正が必要でした.
Private int ReadCapa();
Private int FNTWVOpenFont();
Private int FNTWVCloseFont();
の3つです.