ここ何ヶ月かの間、Perl界隈ではやれlocal::libだcpanminusだperlbrewだと、既存環境に手を入れずにローカルなモジュール環境を構築するという系の話が多くなってきてるような気がします。
local::lib はpixiv2rssをサクラ鯖上で動かす時に使ってみました。 perlbrew は環境をごっそり切り替える系なので、今のところ使うアテがない.
で、残りのcpanminusですが、この間からApp::cpanminusをインストールしてちょこちょこ使ってみてます。(cpanminusはApp::cpanminus以外に githubからstandalone版を持ってくるとか wget http://cpanmin.us/ | perl するとか色々あるみたい)
以下はその雑感です。
- スピードに関しては、余計な事をしていない分やっぱり CPAN や CPANPLUS に比べると速いと思う。
- モジュールのビルドとテストでの出力を標準出力に出さないようにすることでログでコンソール画面が流れていきにくいのもまぁいい感じかな。
- App::cpanminus - get, unpack, build and install modules from CPANという説明の通り、インストールに特化したモジュール管理ツールなので、インストールされているモジュールを削除とか、更新されているモジュールの一覧を出すとかあまつさえ更新されたモジュールをインストールとか そういう機能はついていないので、ちと不満。 (どうしてもやりたければ
cpanm `cpanp -o |awk '{print $4}'`みたいに出来るけどスマートじゃないよなぁ... 後、Windows環境ではそれすら出来ないし.. Makefile.PL/Build.PL へ引数を与えたくても できない 。CPANPLUSならcpanp -z Foo::Barでモジュールのアーカイブファイルを展開したディレクトリへchdirしてくれるんだけど、cpanminusには同等の機能はないみたい。コメントで指摘いただきましたが、cpanm --lookが同等の機能です。ちゃんとhelpに書いてあるのに見逃してた。スンマセン... いちおうcpanminusには --prompt オプションがあるけど、これはテストが失敗したときのみ展開先ディレクトリへ移動することもできる というもので、しかもMakefile.PLがエラーで終了した場合はそのプロンプトすらでずにそのままエラー終了されてしまう。
そんなわけで、
普通にモジュール入れるときは cpanm, それ以外に モジュールの更新とかMakefile.PLへの引数渡しとかはCPANなりCPANPLUSなり使う。
ってのがいいのかなぁ、と。
# 展開したディレクトリに移動する --extract オプションあたりが追加されると嬉しいなぁ
またまたコメントで指摘いただきましたが、
更新モジュールのインストールは別途 App::cpanoutdated を導入すれば cpan-outdated | cpanm で可能とのことです。(これはWindowsでも動く!素晴らしい!)
後はビルド時にごにょごにょしなきゃいけないモジュールの更新だけどこか別のとこに分けておく何かを作れば快適なモジュール更新ができる算段に





cpanm --look Foo::Barできますよ
>lestrratさん
おおぅ、ほんとだ。
cpanm -h を読み返したらちゃんと --look 載ってますね。すみません。
何で見逃したんだろう...
記事の方は訂正しておきますー
更新されたモジュールのインストールは、App::cpanoutdated をインストールして、
> cpan-outdated | cpanm
でできます。
>Miyagawaさん
おぉ、作者自ら.. ありがとうございます。
更新チェック専用のモジュール(というか、ツール)もあるのですね。不勉強で申し訳ないです。
早速導入してみようと思います。
一応、削除は pm-uninstall [http://github.com/xaicron/pm-uninstall] でできます。
CPAN には上がってないのですが><