Shipwrightちょっとだけ使ってみたよ

参考:Shipwright - dann@catalyst - Catalystグループ
Shipwright-1.01使ってみたよ。CPANモジュール群をSubversionリポジトリで管理できるよ。
どっかの誰かが『CPANモジュール群のバージョンを各マシンで合わせるためにrpmに変換して云々』ってのをやってたと思うけど、Shipwrightの用途は多分そんな感じです。
Subversionリポジトリにコミットすることになるので、野良パッチのバージョン管理も出来るかもね。

インストール

普通にCPANから。

# cpan Shipwright

Shipwrightはsvnが必要です。
svkにも対応していてsvkが無い環境だとインストール時にエラーになるけど、運用上svkを使わないんだったらcpan -f Shipwrightで問題無いよ。

初期化

$ shipwright create -r svn://MyRepository/Shipwright

これでsvn://MyRepository/Shipwright 以下に色々コミットされるよ。
既にsvn://MyRepository/Shipwright が存在してたら、中身が空っぽにされちゃうから注意ね。


svn://MyRepository/Shipwright/shipwright/{map,source}.yml が無かったら怒られるよ。空のファイルをコミットしておけばOK

$ svn co svn://MyRepository/Shipwright/shipwright
$ cd shipwright
$ touch {map,source}.yml
$ svn add {map,source}.yml
$ svn ci -m "added {map,source}.yml" {map,source}.yml

ディストリビューションの追加

$ shipwright import -r svn://MyRepository/Shipwright YAML

svn://MyRepository/Shipwright/dist にYAMLが丸ごとコミットされる感じになるから、CPAN Mirror(Shipwright用に展開済み)っていうイメージになるよ。
まだ使ったこと無いけど、CPANに上がってない奴(source tarball)も扱えるみたいだから、CodeRepos.orgのディストリビューションとかを管理するときにいいかもね。

Shipwright distのインストール

# shipwright build -r svn://MyRepository/Shipwright

これだけで、Shipwrightで管理されてるディストリビューションが全部インストールされるよ!インストール先はデフォルトで「/tmp/ランダム値」になってるから、--install-baseで指定しよう。

$ shipwright build -r svn://MyRepository/Shipwright --install-base /usr/local --skip-test
$ svn co svn://MyRepository/Shipwright Shipwright
$ cd Shipwright
# ./bin/shipwright-builder
でいいらしいんだけど、なんかエラーになる。後で誰かが調べてくれる。 shipwright/source.yml が無くてエラーが起きてたみたい。空のsource.ymlを追加してから
$ ./bin/shipwright-builder --install-base /usr/local --skip-test
でOKでした。

TIPS

$ shipwright help

でコマンド一覧、

$ shipwright help コマンド

でコマンドの詳細が見れるよ。

svn://MyRepository/Shipwright はリネームしちゃっても大丈夫だよ。
最初は svn://MyRepository/CPAN って名前にしてたけど、野良ディストリも扱えるって分かってsvn mvしちゃったけど問題ナッシング。