JeffreyFrancesco.org 公開日 タグ Tag Permalink 現在地 Facebook page Twitter RSS feed

「複数の画像ファイルをあらかじめ決めておいたいくつかのサイズにリサイズして書き出す」というアプリを探してみたんだけど、思ったようなのがなかなか見つからない(複数の画像を一気にリサイズして書き出すアプリはいくつかあるけど、指定できるサイズが大抵一種類しかなくて、違うサイズに書き出そうと思ったら結局何回も作業を繰り返さないといけないので、それが面倒くさい)ので、仕方ないから自作するかと画像操作系ライブラリの情報を色々と当たってみてたのだが、そんな中で Imager という Perl モジュールがあるのをつい最近知った。GD とか ImageMagick とかの有名どころしか知らなかった私を神様どうかお許しください。

まあ懺悔はさておき、知ったら知ったでとりあえずインストールしてみたくなるのが世の常というもの。なのでひと通りやってみたのだけど、そう簡単には上手くいかなかった(ここでいう簡単とは「ただ単に ./configure; make; make install ではダメだった」の意)という話。以下はそのメモ。

まずは画像処理系のライブラリが必要なので入れる。libpngfreetype は(X11 をインストールしていれば)元から入っているので省略。libjpegOS X 用にコンパイルしたのをインストーラパッケージにして配布してくれてる人がいるので、そこからもらってきて入れた。というより既に入れてた。現時点で本家のバージョンは 8d になってるけど、Ethan さんが配布してるのはまだ 8c なので、本当は最新版のソースからコンパイルした方がいいんじゃないのかな…とは思うけど、とりあえず先送り。

giflibLibTIFF も一応入れておくことに。それぞれ最新のソースをダウンロードしてきて、とりあえずは何も考えずに、

$ ./configure
$ make
$ sudo make install

としてみる。giflib はこれでインストールできたみたいだ(が、実はあとで困ることになる。汗)けど、LibTIFF は make の段階でエラーが出てる。ググってもずばりの解決策が見つからないので、仕方なくエラーメッセージを最初からよく読んでみると、error: GL/gl.h: No such file or directory などと冒頭にある。ヘッダファイルが見つからないよってことよね。GL ってことは OpenGL 関連だろうか。

…などと難しく考えていても仕方がないので、とりあえずそのヘッダファイルのある場所を探してみると、/usr/X11/include にあった。単純に ./configure だけでは X11 関連のライブラリファイルの場所を認識できないようだ。それなら多分オプションがあるだろうと思って調べると、--x-includes--x-libraries で指定すればいいみたい。なので以下のようにして再度挑戦。

$ ./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib

これで make してみると今度はエラーが出なかったので大丈夫そう。あとは sudo make install でインストール完了。

んで、ようやく Imager のインストールに入る。libpng が X11 ディレクトリに入っているために cpan コマンドでのインストールは無理っぽいので、これもソースからビルドしてインストールすることに。Makefile.pl を実行する際に先にも挙げた「Mac OS X Lion に Perl のモジュール Imager を入れる - It’ll be」にあるように、

$ IM_INCPATH=/usr/X11/include IM_LIBPATH=/usr/X11/lib perl Makefile.pl

とやって場所を指定すれば OK…らしいのだが、なぜか先ほど入れた giflib や LibTIFF が見つからないよーと返してくる。なんでじゃ…と思ったら README にその辺ちゃんと書いてあった

d) The default perl build in Snow Leopard and Lion is a fat binary, and default builds of giflib, libpng and libjpeg (and maybe other libraries) will produce link failures.

To avoid this you need to supply a CFLAGS parameter to the library’s configure script, but since the -arch flag conflicts with the options used to build the dependency files, you need to supply another flag to disable dependency tracking.

がんばって意訳すると「デフォルトで入ってる perl は fat binary(OS X でいうところのユニバーサル・バイナリか)だから、デフォルト状態でビルドした giflib とかのライブラリとリンクする時にコケるよ、回避するには(同じく fat binary にするために?)configure の時に CFLAGS パラメータを指定してね。その時は一緒に dependency tracking も無効にしてね」ということだ…と思う。汗

まあ、簡単にいうと「もういっぺんライブラリをインストールし直せ」ということですな orz 仕方がないのでやり直した。一度 make clean した上でもう一度 ./configure し直す。パラメータについて詳しくは先ほど引用した部分の続きに書かれている通りで、giflib の方は、

$ ./configure --disable-dependency-tracking CFLAGS='-arch x86_64 -arch i386'

でOK。LibTIFF の方は先のオプションも同時に指定する必要があるので、

$ ./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --disable-dependency-tracking CFLAG='-arch x86_64 -arch i386'

とすることになる。3回くらい打ち間違えて涙を拭ったのも、今となってはいい思い出です。涙

で、もう一度 Imager のソースディレクトリ内に戻って Makefile.pl を実行。今度はちゃんと giflib も LibTIFF も見つけてくれたので、あとは

$ make
$ sudo make install

で、無事インストールされた。perl -MImager -le 'print for keys %Imager::formats' するとひと通りのフォーマットが返ってくるので大丈夫なはず。ただ、動作確認はしてないのでちゃんと動作するかはまだ分からん。汗

とにかく今回は、検索しても情報がなかなか見つからないのでえらく難儀しただよ…でも、今日自分がこれを書いたことで、明日から Lion に Imager を入れてみようって人は検索したらこれが出てくる(に違いない…はずだ…いや、かもしれない…)から、そういう人に対してほんの少しでも助けになればいいかな、と思っておく。