我正在尝试以编程方式找到CPAN版本,但最终失败。
尝试使用perl%Config和%ENV,但在那里找不到任何内容。
my $cpanv = `cpan -v`;
# gives: Loading internal null logger. Install Log::Log4perl for logging messages
我的目标是通过编程自动配置cpan。 CPAN配置提示因版本而异。
CPAN询问类似问题: 1.“您要手动配置吗?[是]” 2.“您要cpan配置吗?[否]”
找到CPAN版本或避免无人参与的CPAN配置的任何方法?
答案 0 :(得分:1)
cpan
命令行程序是App::Cpan的包装。据我所知,这两个文件始终具有相同的版本号。这意味着您可以执行以下操作:
use App::Cpan;
my $cpanv = $App::Cpan::VERSION;
更新:这里有一些概念可以直接理解。
cpan
是使用App :: Cpan的微型脚本。它也已添加到Perl版本5.12中。 [更新:是cpan
的当前版本-还有一个较早的版本基于CPAN.pm。] App :: Cpan和cpan
共享相同的版本号(当前为1.675)。 CPAN.pm较旧,因此具有较大的版本号(当前为2.27)。
运行cpan -v
时得到的是App :: CPAN的版本号-这就是我在代码中给您的内容。
答案 1 :(得分:1)
我的目标是通过编程自动配置cpan。
如果您在谈论具有已知配置的系统,只需创建(或修改)~/.cpan/CPAN/MyConfig.pm
。例如,以下是我的:
$CPAN::Config = {
'auto_commit' => q[0],
'build_cache' => q[5],
'build_dir' => q[/home/ikegami/.cpan/build],
'build_requires_install_policy' => q[yes],
'cache_metadata' => q[1],
'check_sigs' => q[0],
'commandnumber_in_prompt' => q[1],
'connect_to_internet_ok' => q[1],
'cpan_home' => q[/home/ikegami/.cpan],
'dontload_hash' => { },
'ftp' => q[/usr/bin/ftp],
'ftp_passive' => q[1],
'ftp_proxy' => q[],
'getcwd' => q[cwd],
'gpg' => q[/usr/bin/gpg],
'gzip' => q[/bin/gzip],
'halt_on_failure' => q[0],
'histfile' => q[],
'http_proxy' => q[],
'inactivity_timeout' => q[0],
'index_expire' => q[1],
'inhibit_startup_message' => q[0],
'keep_source_where' => q[/home/ikegami/.cpan/sources],
'load_module_verbosity' => q[none],
'lynx' => q[],
'make' => q[/usr/bin/make],
'make_arg' => q[],
'make_install_arg' => q[],
'make_install_make_command' => q[/usr/bin/make],
'makepl_arg' => q[],
'mbuild_arg' => q[],
'mbuild_install_arg' => q[],
'mbuild_install_build_command' => q[./Build],
'mbuildpl_arg' => q[],
'ncftpget' => q[/usr/bin/ncftpget],
'no_proxy' => q[],
'pager' => q[less],
'perl5lib_verbosity' => q[none],
'prefer_external_tar' => q[1],
'prefer_installer' => q[MB],
'prerequisites_policy' => q[follow],
'scan_cache' => q[atstart],
'shell' => q[/bin/bash],
'show_upload_date' => q[0],
'tar' => q[/bin/tar],
'tar_verbosity' => q[none],
'term_is_latin' => q[1],
'term_ornaments' => q[1],
'trust_test_report_history' => q[0],
'unzip' => q[/usr/bin/unzip],
'urllist' => [q[http://ftp.osuosl.org/pub/CPAN/], q[http://mirrors.hub.co/CPAN/], q[http://cpan.arcticnetwork.ca/]],
'use_sqlite' => q[0],
'version_timeout' => q[15],
'wget' => q[/usr/bin/wget],
'yaml_load_code' => q[0],
};
1;
__END__
(可选)您可以强制使用默认值,并修改需要更改的内容。例如,
cpan <<<'o conf init
yes
o conf prerequisites_policy ask
o conf commit
quit
'
o conf init
使初始化过程开始。 yes
接受默认设置。 o conf prerequisites_policy ask
是更改默认值的示例。 o conf commit
保存更改。