【问题标题】:Distributing a Perl Application分发 Perl 应用程序
【发布时间】:2010-08-03 04:59:25
【问题描述】:

我最近创建了一个小 Perl 应用程序,它利用了一些需要通过 CPAN 安装的非核心模块。

有没有办法分发应用程序,能够检查是否安装了所需的模块,如果没有安装,则从 CPAN 中提取它们?我想我正在寻找类似于 CPAN 自动依赖安装功能的东西。

我考虑过使用 module-starter 和 Module::Install 创建一个类似模块的目录结构,然后定制 Build 文件以将应用程序安装到 /bin ......但我不确定这是否是一个鞋子-喇叭解决方案。

【问题讨论】:

  • 不是一个完整的答案,因此是一个评论。 bugzilla 的人一直在思考这些问题。也许看看他们现在如何安装依赖项?除此之外:daxim 所说的话。

标签: perl distribution cpan


【解决方案1】:

这不是鞋拔解决方案,而是正确的做法。由于极端情况,您应该让专门的工具处理依赖关系,例如写在安装说明中:

  1. 解压存档。
  2. 在未归档的目录中运行cpan .

bin 目录下安装程序不需要更改构建文件,默认情况下会这样做。

【讨论】:

  • 非常感谢 - 这非常有效。由于我的应用程序是一个简单的单文件 perl 脚本而不是 lib/My/Module.pm 类型的项目,我只认为使用 module-starter 将是一种鞋拔式解决方案。
  • @Joe:CPAN 上有很多模块可以安装 bin 中的脚本;方法是一样的。
【解决方案2】:
BEGIN {
    eval "use evil::module";
    if($@) { `sudo perl -MCPAN -e 'install evil::module'`; exit ; }
}
  1. 您可以轻松检查某个模块是否存在,然后 a) 尝试安装它并退出/重新启动应用程序 b)croak/die。 (就像上面的代码 sn-p 一样)

  2. 你也可以附加你要打包的模块,解压到某个目录,然后将目录推送到begin块中的@INC。

【讨论】:

  • 这很有趣。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2011-08-10
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多