assetsの罠の対処法

これは 3月にこの機構をつけたときから把握していて、なんとかインストール時にいれるようにはしたいなと思ってます。オプションとしては、

  • /usr/local/share/plagger などにいれる
  • Perl の @INC にいれる
  • pm ファイルの __DATA__ にダンプして、初回実行時に ~/.plagger/assets などにコピー

というあたりがあると思っていて、どれも一長一短な感じです。解決したい前提は、

  • root 権限なしでもインストールできなければならない
  • バージョンアップした際の古いファイルの更新や削除、リネームに対応できなければならない
  • Filter::EntryFullText のように大量にファイルがある場合、デフォルトでそれをすべてロードするのは鬱陶しい気がする

といったところ。

ロンドンにいる間にちょっと考えてみます。ppm/yum/ports/apt をつくってくれているみなさんからも意見は求む。

これ、あれこれ考えていたのですが、せっかくModule::Installを使っているのですから、Makefile.PLに一行、

install_share 'assets'

と書くのが一番簡単なような気がしてきた(これでsite/lib/auto/Plagger以下にassetsの中身が入る)。

これのメリットはperl Makefile.PLしたときにassetsの中身もblibの下にコピーされるので、少なくともppmについてはそのままパッケージングしてしまえば通常通り配布できること。古いファイルの削除やリネームに対応するにはsvnを使うしかあるまいと思いますが、少なくとも上書き更新でよければパッケージ管理ツール側に一任できること。

デメリットは、svn coしたものをインストールするときに(現状では).svnファイルの中身までauto配下に入ってしまうことと、サンプルを見たいと思ったときにいささか階層が深くて不便なことかな。

Jiftyが同じようにinstall_shareしているので参考になると思います(Makefile.PLとJifty::Util)。