这里How do I automate CPAN configuration?我找到了一些导致一些问题的答案。 我尝试了 cpan -j config.pm ,但据我所知,它是用于每次安装的用法,而不是用于永久更改配置文件。
使用 $ CPAN :: Config -method 强制CPAN :: FirstTime不默认为手动 -part在这里不起作用所以我试了没有它:
#!/usr/bin/perl
use strict;
use warnings;
use Config;
use CPAN;
use CPAN::FirstTime;
$ENV{PERL_MM_USE_DEFAULT}=1;
$ENV{PERL_MM_NONINTERACTIVE}=1;
$ENV{AUTOMATED_TESTING}=1;
my $cpan_home = '/home/me/.cpan';
mkdir $cpan_home or die $! if not -d $cpan_home;
mkdir "$cpan_home/CPAN" or die $! if not -d "$cpan_home/CPAN";
CPAN::FirstTime::init( "$cpan_home/CPAN/MyConfig.pm" );
delete $CPAN::Config->{links};
$CPAN::Config->{applypatch} = '';
# ...
$CPAN::Config->{build_dir} = "$cpan_home/build";
$CPAN::Config->{cpan_home} = $cpan_home;
$CPAN::Config->{histfile} = "$cpan_home/histfile";
$CP$CPAN::Config->{keep_source_where} = "$cpan_home/sources";
$CPAN::Config->{make_install_make_command} = 'sudo make';
$CPAN::Config->{mbuild_install_build_command} = 'sudo ./Build';
$CPAN::Config->{prefs_dir} = "$cpan_home/prefs";
# ...
$CPAN::Config->{yaml_module} = 'YAML';
CPAN::HandleConfig->commit("$cpan_home/CPAN/MyConfig.pm");
CPAN::install('Bundle::CPAN');
# ...
# etc.
exit 0;
这样好吗?到目前为止,我注意到的唯一不好的事情是等待,直到找到cpan-mirror-urls。 什么是删除$ CPAN :: Config-> {links}; for?
答案 0 :(得分:1)
看起来你做了很多工作。你想要完成什么?
如果要永久更改配置文件,只需更改配置文件即可。这是Perl代码,所以我认为你可以做所需的一切,比如在配置文件中设置根目录,而不必处理CPAN.pm。