分发一个Perl应用程序

4
我最近创建了一个小的Perl应用程序,使用了一些非核心模块,需要通过CPAN安装。
有没有办法分发该应用程序并检查所需的模块是否已安装,如果没有则从CPAN中获取它们?我想我在寻找类似于CPAN自动依赖项安装功能的东西。
我考虑使用module-starter和Module::Install创建类似模块的目录结构,然后调整Build文件以将应用程序安装到/bin...但我不确定这是否是一个适当的解决方案。

1
不是完整的答案,只是一条评论。Bugzilla的开发人员已经思考这些问题很长时间了。也许可以看看他们现在如何安装依赖项?除此之外:就像daxim所说的那样。 - tsee
2个回答

3

这不是一个勉强解决的方案,而是正确的做法。由于存在一些特殊情况,例如在安装说明中写明:

  1. 解压缩归档文件。
  2. 在解压后的目录中运行cpan .命令。

你应该让专门的工具处理依赖关系,不需要更改构建文件以将程序安装到bin目录中,默认情况下会这样做。


1
非常感谢 - 这个完美地解决了问题。我之前一直认为使用 module-starter 会是一种勉强的解决方案,因为我的应用程序只是一个简单的单文件 Perl 脚本,并不是 lib/My/Module.pm 类型的项目。 - Joe
@Joe:CPAN上有很多安装脚本的模块会进入bin目录,方法是相同的。 - Ether

-1
BEGIN {
    eval "use evil::module";
    if($@) { `sudo perl -MCPAN -e 'install evil::module'`; exit ; }
}
  1. 你可以轻松地检查某个模块是否存在,然后 a)尝试安装它并退出/重新启动应用程序 b)抛出异常/终止程序。(类似于上面的代码片段)

  2. 你还可以附加要打包的模块,将它们提取到特定目录,并在 begin 块中将该目录推送到 @INC。


很有趣。谢谢。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接