3

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

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

然后我做

$perl -MCPAN -e shell < mycpan.foo
4

4 回答 4

4

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

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

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

盘。

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

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

于 2009-11-06T04:07:49.467 回答
2

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

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

 $ cpan .

如果您在 MiniCPAN 或 DPAN 中有 Task,那么您可以按名称安装它:

 $ cpan Task::WhateverYouCalledIt

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

于 2009-11-06T18:17:23.760 回答
1

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

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

于 2009-11-05T23:04:11.130 回答
-1

我发现对于依赖第三方代码源(例如 CPAN)进行生产部署的大型生产系统是不切实际的。因此,我一直使用诸如aptrpmGNU stow之类的系统来为系统的所有依赖项构建包,然后使用一个部署脚本,它使用包管理器将所有必要的包部署到生产服务器。

于 2009-11-06T14:52:14.757 回答