安装大量的perl模块

我已经着手logging如何在一台干净的服务器上安装一个非常复杂的应用程序。 部分应用程序需要大量的perl脚本,每个脚本似乎都需要大量不同的perl模块。

我对perl了解不多,只知道安装所需模块的一种方法。 这意味着我的文档现在看起来如下:

input每个命令并接受所有的默认值:

sudo perl -MCPAN -e 'install JSON' sudo perl -MCPAN -e 'install Date::Simple' sudo perl -MCPAN -e 'install Log::Log4perl' sudo perl -MCPAN -e 'install Email::Simple' (.... continues for 2 more pages... ) 

有什么办法可以做到这一点,就像我可以用aptitude即可

input以下命令并去喝杯咖啡:

 sudo aptitude install openssh-server libapache2-mod-perl2 build-essential ... 

谢谢(代表将要阅读我文档的长期受苦的人)


编辑:最好的方法是使用打包的版本。 对于那些没有被Ubuntu 10.10打包的模块,我最终得到了一个我在这里find的perl脚本)

 #!/usr/bin/perl -w use CPANPLUS; use strict; CPANPLUS::Backend->new( conf => { prereqs => 1 } )->install( modules => [ qw( Date::Simple File::Slurp LWP::Simple MIME::Base64 MIME::Parser MIME::QuotedPrint ) ] ); 

这意味着我可以在我的文档中添加一个很好的一行:

 sudo perl installmodules.pl 

根据您的发行版本,许多perl模块可能已经打包。

在使用CPAN之前,请检查您的发行版是否已经有一些/大部分/所有需要的软件包可用。

我发现CPAN对于长时间运行的系统来说并不理想,因为随着时间的推移更新模块似乎并不理想。

我build议使用你的系统内置的包pipe理系统。 通过使用特定分发版本库,您应该拥有更less的依赖关系问题,并且随着模块更新,您也将收到新版本。 由于您似乎在使用Ubuntu,因此您可能需要启用一些额外的存储库,例如world,metaverse或uber-ultra-intraverse。

如果没有这个,就会有一个相对较新的网站叫做Linux Packages Search ,它试图为所有的系统编译软件包。 如果没有其他地方可用,我find了所需的额外软件包,祝你好运。

如果您需要对这些模块进行源代码安装(因为我经常需要,因为我将它们作为非root用户安装在系统标准以外的位置),所以我build议CPANPLUS作为一个有价值的升级到标准CPAN – 它处理依赖解决scheme,并可以自动安装所有的模块的依赖关系,而你得到一杯咖啡。

另外,如果你正在安装的这个复杂的应用程序也分布在CPAN上(我打算让外界猜测它是RT,每个人都最喜欢的perl依赖项噩梦),CPAN上经常有一个Bundle::AppName包:以及哪些应用程序的给定版本所需的一切。

希望有所帮助; 祝你好运!

我会创build一个任务样式模块,将所有依赖列表绑定到一个CPAN样式模块中。 这样你可以使用标准的cpan工具来pipe理它。 例如,这里是我经常使用的一个包(无耻的插件)

http://search.cpan.org/perldoc?Task::BeLike::JJNAPIORK

你可能可以采取这样的事情,并根据需要进行修改。

另外考虑使用local :: lib而不是全局的perl包含path。 这样你可以更好地pipe理你的代码,而且你不需要root。 这里有一个很好的免费书的链接,涵盖了这个(除其他外)

http://www.onyxneon.com/books/modern_perl/index.html

使用系统function并在每个模块安装之后使用&&运算符

 system("sudo apt-get install 1 && sudo apt-get install 2 &&....");