Building dvipng on Leopard

先日のエントリにて、Mac OS X 10.5におけるGhostscriptのビルドについて記載しました。今回は、dvipngのインストールについて記載します。Mac OS X 10.5にGhostscriptをインストールする際の方針は、以下のようなものでした。

  • Ghostscriptから参照され、依存関係にあるライブラリ群の最新版をインストールしてからGhostscriptをビルドする

多分に漏れず、dvipngのビルドに際しても、Ghostscriptで解決したようなライブラリの依存関係があります。

dvipng
+-- libgd
|   +-- libjpeg
|   `-- libpng
`-- libpng

上記のライブラリ群はMac OS X 10.5に予め用意されていません。dvipngのビルド前に予めインストールしておくのが望ましいでしょう。

libjpegおよびlibpngに関しては、前回のエントリにてインストール方法を紹介していますので、今回はそれらのライブラリのインストールが終了したという前提で、libgdのビルドから紹介しようと思います。


libgdのポータルは、Main Page - LibGDになります。tarボールのダウンロードも同一ページからたどることが出来ます。安定版の最新は、2.0.35になります(gd-2.0.35.tar.bz2)。

このtarボールを適当なディレクトリに伸長し、ビルドします。前述したlibjpegおよびlibpngがインストール済みであれば、libgdのビルドとインストールは難易度の高いものではありません。

> bzcat gd-2.0.35.tar.bz2 | tar xvf -
> cd gd-2.0.35
> ./configure
> make
> sudo make install

以上でlibgdのインストールは終了です。


さて、次にdvipngのtarボールをダウンロードします。dvipngはSourceForge.net: dvipng: A DVI-to-PNG converterから入手することが出来ます。本エントリ記載時の最新ヴァージョンは、1.9でした(dvipng-1.9.tar.gz)。

早速適当なディレクトリに伸長し、configureしてみましょう。今回ビルドするdvipngは/usr/local/binに格納する予定ですので、configureに--enable-selfauto-setを指定します。

試しに、環境変数を何も設定せずにconfigureを実行してみましょう。

> tar zxvf dvipng-1.9.tar.gz
> cd dvipng-1.9
> ./configure --enable-selfauto-set
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for gs... gs
checking whether gs has the pngalpha device... yes
checking for pow in -lm... yes
checking for deflate in -lz... yes
checking for basename in -lgen... no
checking for png_read_image in -lpng... yes
checking for gdImageCreate in -lgd... yes
checking for kpse_set_progname in -lkpathsea... no
configure: error: cannot find/use libkpathsea

libkpathseaにて提供されているはずのkpse_set_prognameが見つからず、configureが異常終了してしまいました。


libkpathseaはKpathsea Libraryと呼ばれている、Karl Berry氏が作成したライブラリです。このライブラリは単体で用意せずとも、先日のエントリにてインストールしたteTeXパッケージに含まれています。例えば私の環境では、/usr/local/teTeX/lib以下にコンパイルされたライブラリファイル群が格納されています(libkpathsea.aおよびlibkpathsea.la。libkpathseaに関しては、Kpathsea libraryが詳しいので、興味のある方は参照されることをお勧めいたします)。


では、kpathseaのヘッダおよびライブラリを検索するようconfigureに指定してみましょう。

> CFLAGS=-I/usr/local/teTeX/include LDFLAGS=-L/usr/local/teTeX/lib ./configure --enable-selfauto-set


configureが無事kpathseaライブラリを見つけられたら、makeしてdvipngをビルドしましょう。


dvipngをインストールする前に、テストとしてmake testするとよいでしょう。テストはビルドしたdvipngを用い、test_dvipng*.pngという名前のファイルを作成します。例えば、フォントが見つからなかった場合には以下のログが出力されるでしょう。

./dvipng -T tight -strict test_dvipng
This is ./dvipng 1.9 Copyright 2002-2006 Jan-Ake Larsson
./dvipng warning: cannot find ps2pk.map, nor psfonts.map kpathsea: Running mktexpk --mfmode cx --bdpi 300 --mag 1+100/300 --dpi 400 zptmcm7v
mktexpk: don't know how to create bitmap font for zptmcm7v.
kpathsea: Appending font creation commands to missfont.log.
[1./dvipng warning: font zptmcm7v at 400 dpi not found, characters will be left blank kpathsea: Running mktexpk --mfmode cx --bdpi 300 --mag 1+100/300 --dpi 400 zptmcm7m
mktexpk: don't know how to create bitmap font for zptmcm7m.

テスト結果を確認するには、open -a Preview test_dvipng*.pngとてPreviewアプリケーションから確認しましょう。

テストが終了したら、

> sudo make install

としてインストールします。

以上でdvipngのビルドとインストールは終了です。

まとめ

  • dvipngをビルドするためには、libgdを予めインストールする必要がある*1
  • teTeXがインストールしたkpathseaライブラリを参照させるとよい。


今回ダウンロードしたtarボールの入手先を再度まとめると以下になります。

gd-2.0.35.tar.bz2
Main Page - LibGD
dvipng-1.9.tar.gz
SourceForge.net: dvipng: A DVI-to-PNG converter


今日のエントリを含め、以下のエントリにてMac OS X 10.5にTeXおよびgnuplotの環境を構築する方法を記載しました。


私の環境では、EmacsMuseによる数式およびグラフの作成が必須です。dvipngの再ビルドを検討したのも、EmacsMuseに美麗なグラフを挿入したかったのが元々の動機です*2。私のEmacsMuse環境ではlatexタグ同様、gnuplotタグにてグラフが挿入出来るよう、自前のelispを用意して活用しています。

参考

EmacsMuse環境を構築した際に記載したエントリは以下にて参照することが出来ます*3

*1:また、強い依存関係にあるlibjpegおよびlibpngも予めインストールしておく必要がある

*2:teTeXにはdvipngが含まれているが、望むクオリティが出ませんでした

*3:Installing TeX environment into MacBook Proでは、Mac OS X 10.4.xでのteTeX関連エントリを記載しています