2007年10月11日木曜日

TeX — xdvi のインストール (1)ミスって大損害

 この長文はほとんど愚痴です.読む価値はありません.ただし,最後のパラグラフには重要な情報が書かれていると思います.

 xdvik をインストールしてみたが失敗に終わった.
 もともと xdvik のインストールには難しいところがある.xdvik は他のアプリケーションに比べて更新頻度が高く,xdvik-22.15,22.40,そして 22.8x(x=1〜4)と多数のバージョンがあるし,また日本語パッチも本家への追従と独自の改変が重ねられているのでリリースが沢山ある.ところが,選択の参考になる記事や適用例がちっとも見つからない.

 内山氏のページには 22.40 のインストール方法が記載されているが,リンクの張られた先に既にそのバージョンはない.旧バージョンを置いてないのは新バージョンの使用を強く推奨しているためなんじゃなかろうか,という印象を受けてしまったので,22.40 の探索をやめて最新版をインストールする方針に決定.
 そこで上記リンク先から最新版の xdvik-22.84.12.tar.gz を拾い,それに対応する日本語パッチ xdvik-22.84.12-j1.34.patch.gz を探し出して拝領.

 ただし,この組み合わせをインストールした紹介例がネット上に見当たらず,Mac OS X で何の改変もなしに動くのかさっぱり判断できないので,内山氏らの書いた 22.40 のインストール方法を参考にしながらダメモトでやってみる.

 で結果は失敗.コンパイルはきちんと完了し,X11 上で xdvik を起動することはできたものの,ファイルを読み込むと何も表示されずにアプリケーションが終了してしまう.フォントの設定が悪いのだろうか.
 そこで日本語パッチをあてるのをやめ,xdvik-22.84.12 のまま再コンパイルしてみるが,できたアプリで英語の dvi ファイルを開いてみてもやっぱりダメ.
 configure する際与えるパラメータを変えてみたり,cnf ファイルをいじってみたりしたが,ダメなものはダメだった.

 何が悪いのかといろいろググッているうちにエラい事を発見.内山氏は xdvi のインストールに先立って FreeType をインストールするよう指示しているが,別のページ(PukiWiki)によると,Mac OS X 10.3 の場合、必ず OS 付属の X11 に同梱されている freetype を使うようにしなければならないらしい.う〜む.内山氏のページは OS X 10.2 を対象に書かれているので,おそらく PukiWiki の記述の方が新しいのだろう.OS X 10.4 の場合どうすべきなのかは検索しても見当たらないが,10.3 に準ずると考えるのが妥当ではないか.

 ということで,自分でインストールした FreeType 関連のファイルをあわてて /usr から別の場所に非難させ,改めて xdvik をコンパイルしてみたが結果はやはりバツ.

 しかたがないので一旦 xdvik の導入を保留にし,内山氏の Mxdvi のインストールを先に片付けることにした.ところが,それこそ解説のページや添付のReadme 1st に「書いてある通りにやってみた」のだが動かない.Mac OS X Tiger で Mxdvi を使えている例がちゃんとあるので,こちら側の問題であることは間違いなさそうだが,何度も文書を読み返し,何度もやり直してみたものの,結局どこに落ち度があるのか見つけられなかった.「書いてある通りにやってみたけど動きません」的な質問を作者にぶつける訳にもいかないし,困った…

 dvi の viewer が無いのはかなり不便だが,もう一手間かけて pdf までもっていけば何とかなると考え,インストールを一旦中止し,実際に TeX で文書を作成する作業に戻ることにした. ところが!いつの間にか platex が正常に動かなくなっているではないか! 今まで見た事も無いエラーでコンパイルが中止されてしまう.

 「xdvik の作業中に手順を誤ると $TEXMF/web2c/texmf.cnfが上書きされてしまう」とあちこちにいてあったので,「あれ?間違えた覚えはないけども,多分原因はこれだな」と思い,念のためにとっておいたtexmf.cnfのバックアップをリストアした.ところが,それでも platex が動かない!

 mktexlsr を実行してみたが結果は同じ事.platex が吐くエラーメッセージを見ると,どこかの設定ファイルが致命的に書き換えられているようだが,こうなるともう僕のスキルでは原因の突き止めようがない.よしんば書き換えられた設定ファイルが探し出せたとしても,その中身をどのように修正すればよいか皆目見当がつかないだろう.

 それならば teTeX と pTeX をコンパイルし直した方が早い.そう判断して,まず teTeX を再インストールしたのだが,sudo make install が正常終了しなくなったではないか!(泣)tcfmgr.mapfmtutil.cnf が見つからないと言われる.よく調べてみると,fmtutil を実行する時点でパスがきちんと通っていないことが判明.そんなこと言われても,$prefix はデフォルトを使っているから,configure するときオプションにパスを指定する必要などないし,実際最初コンパイルしたときはそれでうまく行っている.一体なにが最初にインストールしたときと違っているというのか.

 これ以上踏ん張ってもラチがあかないと判断し,ディレクトリ teTeXsrc をばっさり削除して一からインストールしなおす.ところが,やはり fmtutil.cnf が見つからず sudo make install が異常終了.嗚呼 orz.このパラグラフの作業を3回ほど繰り返すも,結果はやっぱり orz.相変わらず,tcfmgr.mapfmtutil.cnf が見つからないと言われる.いつどこでパスの設定がおかしくなっているのかさっぱり分からない.

 teTeXsrc を削除して一からインストールしているのにうまくいかないなんて,『あり得ないことが起こっている』としか言いようが無いではないか.
 こうなったらヤケクソである.OS X 10.4 を再インストールだ.なんでそこまで遡らなきゃならんのだ!と毒づきながら,OS を入れ直し,Developer Tools を入れ直し,X11 を入れ直し,そのあとようやく祈る思いで teTeX をコンパイルしてインストール.で結果は,やっぱり sudo make install が異常終了.嗚呼あぁぁぁぁ! もう泣きそうである.

 やはり make する時点でパスの設定がおかしくなっているという問題に正面から取り組まざるを得ないようだ.嫌だけど.

 気を取り直して make ファイルの中身など色々眺めているときに,ふと環境変数はどうなっているのかと思い,set コマンドを実行したところ,
  TEXMFCNF=/usr/local/teTeX/share/texmf
という結果が目に入る.あれ? 何故この変数だけ残っているのだろうか.Makefile の中には他にも色々変数が定義されていたはずなのに,TEXMFCNF だけ値が残っているなんておかしい.

 新しいシェルを起動してもTEXMFCNFにはこの値が残っている.
 ターミナルを再起動してもTEXMFCNFにはこの値が残っている.
 何とマックを再起動してもTEXMFCNFにはこの値が残っている.
 ありえん./etc/profile.bash_profile.bashrc のどれにもそんな事は書いてないし,make も実行していないのに値が入っているなんてありえん.これは一体どういう事なのか.

頭を疑問符で一杯にしながらさらにネットを徘徊しているうちに,とんでもない情報を発見.田中氏によると,なんと Mac OS X では Finder から起動するアプリケーションに渡す環境変数は ~/.MacOSX/environment.plist というファイルに記述することになっており,なんとそこで設定した環境変数は Mac OS X 全体で有効になるというのだ! それは知らなんだ.

 つまりこれは Terminal で bash を使う立場からすれば,/etc/profile.bash_profile.bashrc の他にも環境変数を設定する場所があるという事ではないか.
 なんてこったい.Mxdvi をインストールするとき, ~/.MacOSX/environment.plist を作って
   <key>TEXMFCNF</key>
   <string>/usr/local/teTeX/share/texmf</string>

と書いたではないか.ここでの設定がずっとついて回っていたのだ.どうりで何をやっても TEXMFCNF の値が消えない訳だ.てっきり environment.plist は Mxdvi に固有のファイルだと思い込んでいたが,とんでもない勘違いだったのか.

 そこで,environment.plist をブッ殺してから Mac を再起動し,teTeX のインストール作業をやってみたところ,遂に!コンパイルに成功した!!!! ここに辿り着くまでの道のりの如何に長かったことか.心底くたびれた.

 しかし,それにしても,だ.~/.MacOSX/environment.plist
  TEXMFCNF=/usr/local/teTeX/share/texmf
と値を設定したせいで,teTeX がコンパイルできなくなるなんて,ヒドいですよ内山さ〜んと思いながら改めて readme 1st.rtf を眺めて驚いた.
  TEXMFCNF=/usr/local/share/texmf/web2c
となるようにしろと書いてあるではないか.これはつまり texmf ではなくtexmf/web2c を指定しろと言う事だ.

 それで思い出した.僕の場合,$prefix=/usr/local/teTeX だから,
  TEXMFCNF=/usr/local/teTeX/share/texmf/web2c
と書くべきであり,実際,最初はそう書いて Mxdvi を動作させてみたのに動かなかったのだ.それで試しに /web2c を消し,
  TEXMFCNF=/usr/local/teTeX/share/texmf
としてみたが,やはり動作しなかったので「あかんわ」と諦め,/web2c を削ったまんまの状態で Mxdvi に拘るのをやめてしまった.元に戻す「一手」を省略したばっかりに,TEXMFCNF にはずっと誤った値が入ったままとなって teTeX のコンパイルに支障を来すことになり,その結果とてつもない時間の損失が生じる羽目になったのである.

 実は Mxdvi の動作確認を行う時点で,僕は ~/.MacOSX/environment.plist を Mxdvi に固有のファイルと思い込んでしまった(そりゃ少しは変だなと思いましたよ.こんなグローバルな名前でいいのかって).だから environment.plist に加えた変更は Mxdvi を再起動すれば反映されると思った.しかし実際は,environment.plist の変更を有効にするためには Mac を再起動しなければならない.この事を知らなかったために,「Mxdvi が動作しない」と判断してしまい,下手に environment.plist をいじり, TeX 全体に悪影響を及ぼす罠を自分で仕込んでしまう結果になったのである.

 そりゃ,自分の稚拙な判断で勝手にファイルを書き換えたんだから自分の責任ですよ.だけど,environment.plist の変更を有効にするためには Mac を再起動しなければならない というのは OS X ユーザーの「常識」に迄は達していないと思うので,やっぱり Mxdvi の ReadMe にはきちんと書いておいて欲しいですよね,内山先生.これって贅沢ですか?

0 件のコメント: