彷徨えるフジワラ

年がら年中さまよってます

最新 hgbook のビルド

旧形式(TeX)版ベースの翻訳公開から随分経過してしまったけど、最新版への追従作業を開始すべく、まずは最新ソースでのビルドを実施。

以前の翻訳作業の時も、翻訳作業そのものよりも寧ろビルド(= HTML/PDF ファイル形式への変換)に手間が掛かったのだけど、今回も同じような按配。

最初は日本語化度合いで定評のある Vine Linux 環境で作業していたのだけれど、必須パッケージ群が提供されていない(or パッケージ化方針が異なる)ケースなどで、結局 Debian 環境一本に絞ることに。
まずは README.BUILD の仰せに従って:

  • docbook-xml
  • docbook-xsl
  • libxml2-utils
  • graphviz
  • inkscape
  • patchutils
  • openjdk-6-jdk
  • docbook-xsl-saxon
  • libsaxon-java
  • fop

といったパッケージを導入。

とは言っても、Debian に移行した当初は openjdk あたりのパッケージに対して、apt-get が「見つからない」と言うばかりで、にっちもさっちも行かない状況に。

日本語向け固有パッケージなら兎も角、こんな一般的なパッケージでパッケージ不在はありえないだろう?とウェブの海を漂うこと暫し。

Debian lenny のインストール時に設定されていた(or 事後設定した?) /etc/apt/sources.list 中の URL が:

deb http://security.debian.org/ lenny/updates main

となっていたのだけれど、ウェブベースでの Debian パッケージ検索サービスで表示される入手先 URL は:

deb http://security.debian.org/debian-security lenny/updates main

という感じで、パスが違っている。

試しにこちらを参照するようにしたところ、無事必須パッケージの導入に成功。っつーか、どこで紛れ込んだんだ? > 旧設定

これでビルドできる、と思いきや、README.BUILD に記載された上記必須パッケージだけでは実は足りないという罠。

  • libxml-commons-resolver1.1-java
  • xsltproc

上記2つを追加インストールする必要がある。

Bryan の環境ではきっと、依存関係の都合とか、他の作業のついでとかでインストールされてしまっていたのだろう。うーむ、まっさらの状態でのビルド確認とかして欲しいなぁ。もっとも、翻訳版公開の時は実はそれがスゲー面倒だったので、やりたくない気持ちもわかるんだけどね(笑)。

他にも、クラスパスの設定とか色々あるんだけど、本家に反映できる改善案は、後で修正公開& pull request を出す予定なのと、面倒なのでここでは割愛。

やっとツールが一通り揃ったと思いきや:

java.lang.NullPointerException
    at org.apache.fop.render.pdf.FopPDFImage.setup(FopPDFImage.java:144)
    at org.apache.fop.pdf.PDFDocument.addImage(PDFDocument.java:794)
    at org.apache.fop.render.pdf.PDFRenderer.putImage(PDFRenderer.java:1725)
    at org.apache.fop.render.pdf.PDFRenderer.renderImage(PDFRenderer.java:1652)
    .....

などというスタックダンプが表示されて、PDF 生成のための fop 実行が中断 .... orz

スタックダンプを頼りに情報を探してみたところ、既知のバグらしいとのこと。

OpenJDK だと駄目らしいので、SUN JDK を入れてみるも、改善の兆し無し。

apt-get で導入されるのは 0.94 版の fop なのだけど、0.95 版で修正対応されているらしいので、結局 fop に関してはバイナリ版をダウンロードしてきて使うことに。うーん、パッケージ管理で済まないってのは、一般化させづらいよなぁ > ビルド過程

最新の 0.95 にしたら、無事 PDF の生成に成功。はー、やっとビルドが成功した。

ちなみに、Makefile の記述では、fop 添付の userconfig.xml なる設定ファイルを fop 起動時に指定することになっているのだけど、どうやら最近の版にはこのファイルが添付されなくなった模様。ウェブ上には、usercofig.xml ファイルが添付されていた頃の記述が溢れているのだけど、少なくともパッケージ版/バイナリ配布版には添付されていない。

とりあえず、指定を削っても PDF 生成に問題は無いみたいなので、必要が出てくるまでは無視しておこう。