Mac に UNIX ツールを導入するパッケージシステムのひとつ、MacPorts の話をします。といっても、使い方ではなく、自分で Portfile を書く話です。
MacPorts では(今のところ)バイナリパッケージは提供されておらず、各自のマシンでビルドする仕組みになっています。このビルド手順を記述してあるファイルが Portfile です。
Portfile の例として、私がメンテナンスしている port を挙げておきます。
MacPorts にはたくさんの port が存在しますが、そこにないものが欲しいと思うかもしれません。あるいは、既存の port に満足できずにカスタマイズしたいと思うかもしれません。そんなときに、自分で Portfile を書くことができます。
Portfile の書き方は、MacPorts-JP にある「Portfile の作り方」を読みましょう。以上。
・・・としてもいいんですが、いくつか便利な Tips を挙げてみます。
Tips : Ports tree を用意せずに Portfile を書く
きちんとやるなら Ports tree を用意して macports.conf に追加するのが良いかもしれません。ただ、とりあえず試してみるという程度なら、わざわざ Ports tree を用意する必要はないのです。
適当なフォルダを作って、そこに Portfile を置くだけ。port コマンドを実行するときは、そのフォルダに移動してからコマンドを実行します。このとき、パッケージ名は省略するのがポイント。
port install hoge
とするかわりに、単に次のように実行します。port install
port コマンドでパッケージ名を省略すると、カレントディレクトリの Portfile を参照します。
Tips : チェックサムを簡単に計算する
Portfile に記述するチェックサムは、次のようにすれば簡単に出力できます。
port -v checksum
checksum コマンドは、ビルドフェーズのうちチェックサム照合までを行なっています。この際に -v オプションをつけておけば、チェックサムの計算値が出力されます。md5、sha1、rmd160 をすべて出力してくれるうえ、出力結果は Portfile にそのままコピー&ペーストできます。
Tips : configure オプションを変更する
自前で Portfile を作る場合、そのままビルドするのでなく多少自分でいじりたいことが多いと思います。例えば簡単なところで configure オプションを変更したい場合、Portfile に次のように記述します。
configure.args [オプション]
また、そもそも configure スクリプトを使わない場合は、次のように記述します。
use_configure no
Tips : livecheck
自分で Portfile を書いた場合、バージョンアップの面倒は自分でみなければなりません。このとき、いちいち自分で Web サイトをチェックするのは面倒です。そこで、livecheck の仕組みを活用します。
port livecheck
というコマンドがあり、upstream のバージョンが上がっているか確認することができます。これを有効にするには、Portfile に次のような記述を追加します。livecheck.regex ${name}-(\[a-z0-9.\]+)${extract.suffix}
正規表現でグループ化してある部分がバージョンとみなされます。内容は配布ファイル名にあわせてください。配布元が sourceforge だとこれだけで OK ですが、そうでない場合は type の指定が必要です。たとえば、Web ページ上から正規表現で検索するには次のような type を指定します。
livecheck.type regex
さらなる情報源
日本語による情報交換の場として、MacPorts-JP があります。
- 上でも挙げましたが、Portfile の作り方が、日本語の情報としては一番良いと思います。
- man portfile の和訳も参考になります。
MacPorts 本家には、以下のような情報があります(英語)。
- MacPorts Guide の Portfile Development のセクションにひと通りのことが書いてあります。
- MacPorts Wiki の MacPorts Development のセクションにはいろいろな Tips があります。
Mac Dev JP advent calendar の明日の当番は、MacRuby の watson さんです。よろしくお願いします。