无声和脚本安装的CPAN和Perl模块?

我需要在Scientific Linux(RHEL)安装脚本中自动安装CPAN和一些Perl模块。 不幸的是,我所希望的特定模块(至less其中之一)不能作为RPM被发现,就我所见。

所以我需要安装CPAN,自动configuration(或使用configuration文件),然后自动安装想要的模块(包括依赖项)。

这似乎不是一个非常不寻常的要求,但我还没有看到任何真正的好文件。 问题是,每当CPAN第一次启动交互式configuration运行。 这可以跳过吗? 我该如何直接从命令行启动模块安装?

你可能想看看这个cpanm ; 它是轻量级的,可以编写脚本的,比传统的CPAN简单得多。

在运行CPAN之前尝试设置这个环境variables:

export PERL_MM_USE_DEFAULT=1

当CPAN询问“你想尽可能自动configuration吗?”时,perl会自动回答“yes”

资源

“我怎么直接从命令行启动模块安装?”

这应该做的:

 perl -MCPAN -e 'install Your::Package' 

如果这是一个重复的任务,它可能会支付花费几个小时cpan2rpm,并把它们变成RPM的。 根据我的经验,CPAN运行(甚至是交互式)在太(半)自动安装中被意外事件(版本怪癖,networking问题,虚假testing失败)所困扰。

这应该做的魔术:

 get_cpanm(){ if [ \! -f /usr/local/bin/cpanm ]; then cd $TMP_DIR && curl --insecure -L http://cpanmin.us | perl - App::cpanminus if [ \! -f /usr/local/bin/cpanm ]; then echo "Downloading from cpanmin.us failed, downloading from xrl.us" curl -LO http://xrl.us/cpanm && chmod +x cpanm && mv cpanm /usr/local/bin/cpanm fi fi CPANM=$(which cpanm); if [ \! -f "$CPANM" ]; then echo "ERROR: Unable to find cpanm" return 1; fi return 0 } cpanm Time::HiRes CGI Moose Config::JSON other::cpanmodules