POPFile 1.1.3 が Mac OS X 10.9 (Mavericks) に対応

POPFile カテゴリに記事を書くのはかなり久しぶりな気がする。
先日 Mac OS X 10.9 (Mavericks) がリリースされたが、アップデートすると POPFile が起動しない(または、インストールしようとしてもインストールできない)という報告をいただいたので修正した。OS が無料になったのは助かる。

  • 原因

POPFile が動かなくなった原因は、Mac OS X に含まれる Perl の(デフォルトの)バージョンが変わったこと。Mac OS X と搭載されている Perl のバージョンにまとめたとおりだが、Lion、Mountain Lion ではデフォルトのバージョンが 5.12 だったのに対し、Mavericks では 5.16 がデフォルトとなった。
5.12 もインストールされているが、設定を変更するか、環境変数を設定しなければ 5.12 を使うことができない。
ただし、もしかすると Mountain Lion からアップデートしたときは、デフォルトが 5.12 になっているのかもしれない。これを確認するには、

defaults read com.apple.versioner.perl Version

とする。「5.12」と出てくれば、デフォルトのバージョンが 5.12 になっている。本当にそうなっているかは

perl -v

で確認できる。
ここではまったのは、上記はあくまでユーザ権限で動かしたときの話だということ。テストではうまく動いたのに、インストーラを作ってインストールしたらエラーが出て動かない。試しに、

sudo perl -v

とすると、なんと「5.16」と表示されるではないか!

defaults コマンドを用いた方法以外にどんな方法があるかを調べてみると、 VERSIONER_PERL_VERSION 環境変数にいきあたった。詳しくは perl(1) Mac OS X Manual Page に記載されているとおりで、この環境変数に「5.12」を設定してから Perl を実行すると、5.12 で動いてくれるという仕組み。
このバージョン変更機能は Snow Leopard の時に追加されたらしいのだけど、全然知らなかったよ...(汗)

  • 解決方法

ということで、使用する Perl のバージョンを 5.16 に変えるのではなく、5.12 のままで対応する方向に。Mavericks にアップデートしたら、Subversion のバージョンが変わったらしく、古いローカルコピーで

svn up

したら「バージョンが古すぎるので対応してない」とか怒られてチェックアウトから始めなければならなかったり(チェックアウトする URL も忘れていて、古いローカルコピーの中のファイルをテキストエディタで読んで URL らしき場所を探した)、アップロード後にドキュメントを更新しようと思ったらなぜかアカウントが削除されてしまったりしたが、どうにか Mavericks 対応バージョンをリリースすることができた。

  • 今後について

現状、インストーラを作成するのに PackageMaker という古い仕組みを使っているが、Mountain Lion からは標準ではなくなり、オプションで追加しなければ使えなくなった(配布用のパッケージは Lion で作成した。Mavericks でも追加でインストールすれば動作すること確認)。これ以降は、pkgbuild、productbuild というコマンドラインツールを利用することが推奨されているようなので、これらに対応していく必要がありそう。
productbuild コマンドで指定する XML ファイルで、ライセンス情報を記載したファイルやら背景の画像やらを設定できるようなので、あとで読まなくては。Distribution XML Reference
ざっと見たところだいたいいけそうなんだけど、preflight と postflight の指定方法がわからなかった。これはもしかすると pkgbuild の方で指定するのかな? pkgbuild(1) - Mac OS X Manual Page を見ると、-script っていうオプションでスクリプトのパスを指定できるみたい。preinstall と postinstall のことしか書かれてないけど、他のスクリプトはトップレベルのスクリプトに実行してもらったときしか動かないってことなのかな? 今回のものだと、preinstall と postinstall にしても問題ないので、そっちで対応すればいいのかなぁ。
ま、ぼちぼち試してみよう。