http://qs321.pair.com?node_id=586024

tphyahoo has asked for the wisdom of the Perl Monks concerning the following question:

I have a script where it would be useful to be able to automate my custom cpan configuration.

Currently I have to do this by hand. Something like:

thartman@thartman-laptop:~/nbarter$ cpan cpan shell -- CPAN exploration and modules installation (v1.8802) ReadLine support enabled + + cpan[1]> o conf prerequisites_policy prerequisites_policy [ask] + + cpan[2]> o conf prerequisites_policy follow prerequisites_policy [follow] cpan[4]> o conf commit commit: wrote '/home/thartman/.cpan/CPAN/MyConfig.pm' + + cpan[5]> exit Lockfile removed. thartman@thartman-laptop:~/nbarter$

I had hoped I could do something like cpan 'o conf prerequisites_policy_follow; o conf commit'

but that didn't work. Is there some way to do this using the cpan shell? Or some trick with getting bash to give cpan input so it thinks it's coming from the user?

thanks!

UPDATE: google code search had some good examples that I think I can work with, along with merlyn's column.

Replies are listed 'Best First'.
Re: scripted cpan configuration
by merlyn (Sage) on Nov 25, 2006 at 17:07 UTC
Re: scripted cpan configuration
by brian_d_foy (Abbot) on Nov 25, 2006 at 18:22 UTC

    Just create CPAN/Config.pm yourself and put it in a place where it loads before any other CPAN::Config. As long as Perl finds it and it's not missing configuration data, CPAN won't start its interactive configuration. The CPAN::HandleConfig::load method is your map to doing it yourself and avoiding the interactive configuration.

    The CPAN::Config module itself is just an anonymous hash, so you don't have to do that much work to create it yourself. Create the hash with the local values and dump it:

    $CPAN::Config = { 'build_cache' => q[10], 'build_dir' => q[/Users/brian/.cpan/build], 'cache_metadata' => q[1], 'cpan_home' => q[/Users/brian/.cpan], 'dontload_hash' => { }, 'ftp' => q[/usr/bin/ftp], 'ftp_proxy' => q[], 'getcwd' => q[cwd], .... }; 1;
    --
    brian d foy <brian@stonehenge.com>
    Subscribe to The Perl Review