如何一次安装多个CPAN发行版?

时间:2009-11-05 22:41:43

标签: perl install packages cpan

我最近开始了一些Perl开发并使用CPAN来安装我的所有软件包。我想知道是否有一些“最佳实践”来管理脚本或应用程序所需的包。到目前为止,我正在以不雅和繁琐的方式做到这一点。我有一个看起来像这样的脚本:

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

然后我做

$perl -MCPAN -e shell < mycpan.foo

4 个答案:

答案 0 :(得分:4)

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

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

然后,有人可以使用CPAN客户端直接安装您的模块及其依赖项,但是解压缩tarball然后运行

  

cpan。

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

  

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

答案 1 :(得分:2)

这就是存在Task::*分布的原因。您在Task :: distribution中列出了要作为依赖项安装的所有发行版。 Task发行版本身不提供任何东西。

如果您在设置任务的目录中:

 $ cpan .

如果您在MiniCPAN或DPAN中有任务,则可以按名称安装它:

 $ cpan Task::WhateverYouCalledIt

一旦CPAN.pm获得它,它将自动安装所有依赖项。

答案 2 :(得分:1)

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

如果您自己创建CPAN模块,则可以在CPAN安装脚本中表示依赖关系的标准方法,该脚本是为您的分发制作者创建的(例如ExtUtils::MakeMakerModule::Install

答案 3 :(得分:-1)

我发现,对于依赖第三方代码源(如CPAN)进行生产部署的大规模生产系统来说,这是不切实际的。因此,我总是使用aptrpmGNU stow等系统为所有系统的依赖项构建软件包,然后使用软件包管理器部署所有系统的部署脚本必要的包装到生产服务器。