我已经着手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。 这里有一个很好的免费书的链接,涵盖了这个(除其他外)
使用系统function并在每个模块安装之后使用&&运算符
system("sudo apt-get install 1 && sudo apt-get install 2 &&....");