2009-11-05 76 views
3

我最近开始一些Perl开发,并使用CPAN来安装我的所有软件包。我想知道是否有一些“最佳实践”来管理脚本或应用程序所需的软件包。到目前为止,我正在做这种不雅而麻烦的方式。我有一个脚本,看起来像这样:我怎样才能一次安装几个CPAN发行版?

install Foo::Bar 
install Zulu::Car 
... 

,然后我做

$perl -MCPAN -e shell < mycpan.foo 
+0

我结束了使用Module :: Install并创建了一个Makefile.PL的形式: 使用inc :: Module :: Install; .. 需要'Foo :: Bar'; 要求'祖鲁::汽车'; .. – ankimal 2009-11-11 01:50:44

回答

1

我也不会高兴,如果我下载了你的脚本,它会自动安装一些CPAN包。正常的做法是简单地列出文档中的依赖关系,并让用户以他喜欢的任何方式自行安装它们。

如果您自己创建一个CPAN模块,您的CPAN安装脚本中有一种标准的表示依赖关系的方式,该脚本是您的分发制造商为您创建的(例如ExtUtils::MakeMakerModule::Install)。

+0

为什么downvote? – Ether 2009-11-06 01:37:10

+1

这不应该有必要使用wetware,这是最后的手段 – 2009-11-06 04:05:19

4

即使您不上传它,也可以像CPAN模块一样构建您的应用程序。

这基本上意味着你有一个正式描述依赖关系的Makefile.PL,你的应用程序作为myapplication(假设它是一个命令行/桌面应用程序)在脚本/目录中。

然后,有人可以使用CPAN客户端安装模块,它的直接相关性,但解包压缩包,然后运行

CPAN。

或者,该pip工具可让人们直接从远程URL安装应用程序。

PIP http://someserver.com/Your-Application-0.01.tar.gz

+0

你怎么能忘记提到任务? :) – 2009-11-06 18:18:30

-1

我发现,对于大型生产系统依赖于第三方的代码源,如CPAN生产部署是不切实际的。因此,我总是使用系统(例如apt,rpmGNU stow)为所有系统的依赖项构建软件包,然后使用软件包管理器将所有必需的软件包部署到生产服务器。

+0

为什么downvote? – nohat 2009-11-11 13:41:45

2

这就是为什么Task::*分布存在。您列出了您想要作为依赖关系安装在您的Task ::发布中的所有发行版。任务发行本身不提供任何东西。

如果你是,你已经设置了工作目录内:

$ cpan Task::WhateverYouCalledIt 

$ cpan . 

如果您有任务在MiniCPAN或DPAN,那么你可以通过名称安装

一旦CPAN.pm获取它,它会自动安装所有的依赖关系。