最新 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 生成に問題は無いみたいなので、必要が出てくるまでは無視しておこう。