Migrate to new perl with cpan autobundle

作者:   發佈於:  

This almost becomes a monthly task: How can I easily re-install all CPAN modules to my newly installed perl ?

Turns out one of the answers is to use our old friend CPAN.pm.

perl -MCPAN -eautobundle

This finds all installed modules and their distribution name, then stored these information in a snapshot file. When this is finished, the final messages shows:

Wrote bundle file
    /Users/gugod/.cpan/Bundle/Snapshot_2010_09_20_00.pm

Copy that line, Keep it for later. If you read that Snapshot pm file, it's just a list of names inside it's POD. CPAN.pm has special knowledge to install a specially named Bundle::Snapshot module.

Now do a perlbrew switch to your new perl, and run:

perl -MCPAN -e 'install Bundle::Snapshot_2010_09_20_00'

This should read the snapshot file and re-install everything listed in there.

To be honest, I personally had no idea what autobundle means whatsoever until just now. This might not work with older perls with older builtin CPAN.pm. It feels like I should integrate part of it into perlbrew inself to make migration process easier.

Meanwhile I experimented a bit of local::lib-based tool I called it cpan-sets, this helps to have multiple bundled snapshots at a time, while you can switch between them. This tool is written entirely in bash for best results. I have no knowledge how to make it work for t?csh users, please help.