cpan module を symlink で管理できるか

昨日 吉祥寺 pm に参加し、songmu さん、charsbar さんと miyagawa さんの開発している carmel についてお話しすることができた。(主催していただいたmagnoliaさん、ありがとうございました!)

その中で、PERL5LIB にたくさんの path を突っ込むのではなく、symlink で一つのところにまとめてその path のみを設定するのはどうか、という話になった。

これは以前から話題にはなるらしいが、charsbar さんいわく 「ある module の属する distribution が変わったときが大変」とのこと。確かに。

しかし、一度やってみないとその良さ、悪さが自分には理解できないので作ってみた。

これは symlinklib ディレクトリ以下に symlink を作りまくりその path を PERL5LIB に設定し exec できるやつである。

使い方:

> carmel install Plack@1.0030
> cat "requires 'Plack', '== 1.0030';" > cpanfile

> what-happens exec perl -MPlack -e 'printf "Plack %s in %s\n", Plack->VERSION, $INC{"Plack.pm"}'
Plack 1.0030 in /Users/skaji/symlinklib/lib/Plack.pm

> what-happens exec env | grep PERL5LIB
PERL5LIB=/Users/skaji/symlinklib/lib

そんなに悪くない気がする。(charsbar さんに指摘していただいた問題はちゃんと artifact を選べれば大丈夫か?)