Shipwright 試してみた

Shipwright のインストール自体は cpan コマンドでいつも通り。

$ sudo cpan Shipwright

すると shipwright コマンドがインストールされる。shipwright コマンドは svn とかと同じように shipwright .. という感じ。(App::CLI の挙動ですね)

んで、CPAN モジュールを管理したい svn リポジトリを指定して create する。

$ shipwright create -r svn:file:///Users/vkgtaro/Desktop/experimental/repos/dists
created with success

リポジトリは通常の svn コマンドに使われる URI だけじゃなくスキームの前にその種類を指定するのが必要。今回は同一サーバ上に作った適当なリポジトリなので、svn:file:/// で始まってる。
多分、http とかだと svn:http:// とかになる。詳細は shipwright help create すると読めます。

んで、管理しておきたいモジュールは import。

$ shipwright import -r svn:file:///Users/vkgtaro/Desktop/experimental/repos/dists cpan:Encode
CPAN related output will be at /var/folders/-H/-H2Vo1JoFMC3xmx0zUvCrk+++TI/-Tmp-/shipwright_cpan.log
Fetching with LWP:
  http://ftp.riken.jp/lang/CPAN/authors/id/D/DA/DANKOGAI/Encode-2.31.tar.gz
Fetching with LWP:
  http://ftp.riken.jp/lang/CPAN/authors/id/M/MS/MSCHWERN/ExtUtils-MakeMaker-6.48.tar.gz
importing cpan-Encode: detected ExtUtils::MakeMaker build system
importing cpan-ExtUtils-MakeMaker: detected ExtUtils::MakeMaker build system
imported with success

管理しておきたいモジュールもリポジトリと同じように prefix が付けられる。cpan にあるモジュールなら、cpan:Encode とか。
tar.gz で置いておけば、file, http, ftp 越しも可能っぽい。svn, svk の指定やディレクトリの指定も可能っぽい。ので、CPAN に上がっていないモジュールとかも一緒に管理できるね。
詳細は shipwright help import で。

管理してるモジュールをインストールするには build コマンドで。

$ sudo shipwright build -r svn:file:///Users/vkgtaro/Desktop/experimental/repos/dists

デフォルトは /tmp 以下に入る。実際に使うときは --install-base でインストール先を指定して使うといいっぽい。

はてなの人が依存関係を解決しつつ rpm 化するスクリプト公開してるから、rpm 使えるディストリはそっちでやった方が良いかも。

CPANモジュールをスクリプト一発で依存解決しつつrpm化する - とあるはてな社員の日記

shipwright import して管理モジュール増やす手間と rpm 作る手間はそんなに変わらなそうな気もするし、shipwright は build 時に make && make test && make install が走るからインストールに時間がかかると思う。

とかなんとか書いてたら、dann さんもなんか作ってますなw

後は気になりどころは local::lib とかかなぁ。