xaicron (2013/02/27)
社内むけモジュールのかんり
CPAN に上がってないモジュールって長いので以下「ノラ」とします。
ノラA を使ってるんだけど、ある日朝目覚めると
ノラA が更新されて ノラB に依存しました。
ノラB は ノラC に依存しています。
ノラC 入れるノラB 入れるノラA 入れなおすノラC の在り処ノラB の在り処いちいち伝えるの('A`)マンドクセ
cpanfile に git の url とか書いたらよしなに入れてほしいcarton bundle で tarball とかよしなに入れてほしい実は local にインストールするだけだったら可能
% cat cpanfile requires 'git@github.com:tokuhirom/Furl.git'; % carton install ...
しかし
.meta がつくられないcarton.lock は .meta の情報から生成しているcarton.lock から欠ける-> cpanm とかの改修が必要なのでいろいろ考えるべき
上記のようなやりかただと git から直接入れちゃってるし tarball がない!!
-> mirror 作って出直してこいボケカス
/(^o^)\
というわけで ZenPAN です
適当に作ったのであれげだよ!
cpanfile を元に依存モジュールのインストール--savedists もするcpanfile に細工して git からインストールする (くそ)orepan.pl + orepan-index.plcarton install <- new!
zenapn のなかで動いてるとなんか ZENPAN_MODE っていう環境変数がセットされるのでよしなにする
% cat cpanfile
requires 'MyModule' => do {
$ENV{ZENPAN_MODE} ? +{
via => 'git@github.com/xaicron/MyModule.git',
author => 'XAICRON', # default DUMMY
} : '0.01';
};
...
こんなかんじにすると、環境変数なければ以下のように解釈される
requires 'MyModule' => '0.01';
まじきもいね!
% cpanm git@github.com:xaicron/p5-ZenPAN.git
cpanfile を書くadd コマンド使う% zenpan add -p tmp
そしたら勝手に tmp に下に mirror ができた!ヤッター!!
mirror に必要なモジュール全部あるので、
そっから carton install します。
コマンドは以下
% zenpan install -p tmp
これで内部的に carton install してくれて、全部 install できた!
# TODO carton bunlde だけど、
# cp -R tmp/authors local/cache すれば終わりそう
ruby gem って local に gem ファイルを保存しておいてくれるから、二回目移行のインストールが速い。
cpanm も同じような機能あれば良い気がする!
j or →: next
k or ←: prev
h or ↑: list
l or ↓: return
o or ↵: open
? or /: toggle this help