Building Ghostscript on Leopard

先日のエントリで、Mac OS X 10.5におけるteTeXのビルドについて記載しました。今回は、Ghostscriptのインストールについて記載します。


まずGhostscript本体と関連するフォント群を入手しましょう。私がインストールのために用いたtarボールと入手先は以下となります。

ghostscript-8.60.tar.bz2
Ghostscript: Ghostscript Website
ghostscript-fonts-std-8.11.tar.gz
SourceForge.net: Ghostscript fonts*1
ghostscript-fonts-other-6.0.tar.gz
CTAN: directory: /tex-archive/support/ghostscript/fonts


さて、多分に漏れず、Ghostscriptも各種ライブラリに強く依存します。しかし、面白いことに、Ghostscriptのパッケージは必須ライブラリをソースごと内包するスタイルを採用しており、最低限のビルドはGhostscriptのtarボールで完結するようになっています。内包されているライブラリは以下となります*2

ghostscript
+-- jpeg
+-- zlib
+-- libpng
+-- ijs
+-- jbig2dec
`-- jasper


jpegやlibpng等は他のバイナリをビルドする際に多用されるでしょうし、私も自身のバイナリから頻繁に参照しているライブラリです。そのため、今回Ghostscriptをビルドするにあたり、まずそれらライブラリ群の最新版のビルドおよびインストールを行い、その後、Ghostscriptに極力それらを参照させるようにビルドする方針としました。


初めに、上記の方針に反する例を記載しておきます。まず、jasperに関して。Ghostscriptに内包されているjasperのソースコードは、Ghostscriptとの親和性および安定性を加味したパッチが当てられているもののようです。そのため、例外としてスキップします*3

また、ijsおよびzlibに関しては、Ghostscriptのディレクトリ内にソースを配置しなければならないようです。ghostscript-8.60.tar.gzに内包されているijsは最新版であったため、今回は単体でのビルドをスキップします(ijsに興味のある方は、IJSを参照してください(最新版のtarボールは、ijs-0.35.tar.bz2))。しかし、zlibは他のバイナリをビルドする際に参照されることが多く、今回ビルドするlibpngおよびjbig2decからも参照されるため、最新版を入手し、ビルドおよびインストールを行うことにしました*4


これらライブラリ間の依存関係を加味した上でまとめると以下なります。

ghostscript
+-- jpeg		最新版を入手し、ビルド/インストールする。Ghostscriptには最新版を参照させる
+-- zlib		Ghostscriptのビルド時にソースを配置する必要がある。Ghostscriptには内包しているソースを参照させるが、他のバイナリからも多く参照されるため、別途最新版を入手し、ビルド/インストールする。
+-- libpng		最新版を入手し、ビルド/インストールする。Ghostscriptには最新版を参照させる
|   `-- zlib
+-- ijs			Ghostscriptのビルド時にソースを配置する必要がある。最新版が内包されているため、スキップする。
+-- jbig2dec		最新版を入手し、ビルド/インストールする。Ghostscriptには最新版を参照させる
|   +-- zlib
|   `-- libpng
`-- jasper		パッチの当たったソースが内包されている。スキップ。


さて、それではjpegのビルドから始めましょう。最新のjpegライブラリのtarボールは、Independent JPEG Groupから入手可能です(jpegsrc.v6b.tar.gz)。

> tar zxvf jpegsrc.v6b.tar.gz 
> cd jpeg-6b
> ./configure
> make
> sudo make install-lib install-headers


jpegのインストールは以上で終了です。注意すべき点として、makeのターゲット群としてinstall-libおよびinstall-headersを指定しなければならないことを挙げておきます*5


libpngおよびjbig2decはzlibに依存しているため、次にzlibのビルドをします。tarボールの入手先はzlib Home Siteとなります(zlib-1.2.3.tar.bz2)。今回はスタティックおよびダイナミックの双方のライブラリを作成しました(Mac OS Xでは、libz.aおよびlibz.dylib(libz.1.2.3.dylib)となります)。

> bzcat zlib-1.2.3.tar.bz2 | tar xvf -
> cd zlib-1.2.3
> ./configure
> make
> sudo make install
> make distclean
> ./configure --shared
> make
> sudo make install


次にlibpngのビルドです。tarボールの入手先は、libpng.org: top levelになります(libpng-1.2.22.tar.bz2)。

> bzcat libpng-1.2.22.tar.bz2 | tar xvf -
> cd libpng-1.2.22
> ./configure
> make
> sudo make install


最後にjbig2decです。jbig2decも、zlibおよびlibpngに依存しています*6。tarボールは、jbig2decから入手可能です(jbig2dec-0.9.tar.bz2)。

> bzcat jbig2dec-0.9.tar.bz2
> cd jbig2dec-0.9
> ./configure
> make
> sudo make install


さて、各々最新版のライブラリ群の準備が終了しました。早速Ghostscriptのビルドに取りかかりましょう。まず、tarボールを展開します。

> bzcat ghostscript-8.60.tar.bz2 | tar xvf -


ghostscript-8.60ディレクトリの内容は、以下のようになっています。

> cd ghostscript-8.60
> ls -F
LICENSE		configure.ac@	icclib/		jpeg/		toolbin/
Makefile.in@	contrib/	ijs/		lib/		zlib/
Resource/	cups/		imdi/		libpng/
autogen.sh*	doc/		jasper/		man/
configure*	examples/	jbig2dec/	src/


ijs、jasper、jbig2dec、jpeg、libpngおよびzlibがそれぞれ内包されているライブラリのソースディレクトリとなります。前述したように、この中からijs、jasperおよびzlibを除くディレクトリを削除します。

> rm -r jbig2dec jpeg libpng


以上で、Ghostscriptのビルドの準備が整いました。早速ビルドしましょう。

> ./configure
> make
> sudo make install


最後に、Ghostscriptのフォントをインストールします。フォント群のtarボールはfontsディレクトリ以下に展開されます。これらを/usr/local/share/ghostscriptディレクトリ以下に配置します。

> sudo tar zxvf ghostscript-fonts-std-8.11.tar.gz  -C /usr/local/share/ghostscript
> sudo tar zxvf ghostscript-fonts-other-6.0.tar.gz -C /usr/local/share/ghostscript


上記でGhostscriptのインストールは終了です。Ghostscriptのインストール行程をまとめると以下となります。

> ls
ghostscript-8.60.tar.bz2		ghostscript-fonts-std-8.11.tar.gz
ghostscript-fonts-other-6.0.tar.gz
> bzcat ghostscript-8.60.tar.bz2 | tar xvf -
> cd ghostscript-8.60
> rm -r jbig2dec jpeg libpng
> ./configure
> make
> sudo make install
> cd ..
> sudo tar zxvf ghostscript-fonts-std-8.11.tar.gz  -C /usr/local/share/ghostscript
> sudo tar zxvf ghostscript-fonts-other-6.0.tar.gz -C /usr/local/share/ghostscript

まとめ

  • Ghostscriptのtarボールには依存するライブラリのソースが内包している
  • それぞれ最新版のライブラリを参照させることも可能


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

ghostscript-8.60.tar.bz2
Ghostscript: Ghostscript Website
ghostscript-fonts-std-8.11.tar.gz
SourceForge.net: Ghostscript fonts
ghostscript-fonts-other-6.0.tar.gz
CTAN: directory: /tex-archive/support/ghostscript/fonts
jpegsrc.v6b.tar.gz
Independent JPEG Group
zlib-1.2.3.tar.bz2
zlib Home Site
libpng-1.2.22.tar.bz2
libpng.org: top level
ijs-0.35.tar.bz2
IJS
jbig2dec-0.9.tar.bz2
jbig2dec


先日および今回のエントリにて、Mac OS X 10.5におけるteTeXおよびGhostscriptのビルドについて記載しました。

私感では、gnuplotで作成したグラフをpngとして出力する場合、レンダリングの美麗さから、dvipngを用いた結果が最良でした。今回ビルドしたGhostscriptはそのdvipngから使用されています。

多少エントリの順が前後するかとは思いますが、近いうちにdvipngのビルドについて記載する予定です。

*1:ghostscript-fonts-other-6.0.tar.gzと同様、CTAN: directory: /tex-archive/support/ghostscript/fontsからも入手可能

*2:configureの出力からchecking for local ... sourcesとして表示されたもの

*3:ghostscript-8.60/jasper/READMEを参照のこと

*4:ghostscript-8.60.tar.gzに内包されるzlibは最新版(1.2.3)のもの

*5:私は毎回はまっています

*6:ライブラリ自身が依存している訳ではなさそうです