3

谁能解释为什么人们会发表这样的评论?我在 stackoverflow 上看到了几个线程(比如这个),人们这么说。在我看来,PPM 只不过是刚刚被放入你的 perl 安装中的模块的预编译版本。假设它们对系统 DLL 没有外部依赖关系,那么最大的风险是什么?

据我所知,PPM 在安装特定模块时会进行依赖性检查,并将安装它需要的任何其他模块。看起来就像在 Linux 发行版上使用 .deb 或 .rpm 文件一样。

编辑#1:

我找到了这个关于模块 Wx 的页面,他们在其中展示了如何使用 PPM 为 Strawberry Perl 安装 Wx。我试过了,它们似乎工作得很好。我还使用 PPM 和 cpanminus 混合了 CPAN 模块,一切似乎都很好。模块如:

  • Wx
  • 约会时间
  • DBI
  • 数据::自卸车
  • DBD::AnyData

我的结论是,关于将 PPM 与 Strawberry Perl 混合的风险的评论应该与一粒盐一起服用,因为这可能会在这里或那里引起您的问题,但总的来说使用 PPM 模块非常好与草莓 Perl。

4

2 回答 2

7

PPM 是由 ActiveState 创建的(我认为是由 ActiveState 创建的),因此用户可以安装带有 XS 扩展或使用外部库的模块,而无需 C 编译器或 make,或 cpan 期望存在的任何 unixy 东西。他们的问题之一是 ActiveState(或某人)必须为您想要的模块以及它使用的所有模块从 CPAN 制作 PPM。有时这意味着在他们赶上之前使用旧版本,有时这意味着模块不可用。

Strawberry 的天才之处在于它提供了一个隐藏的 unixy 环境,cpan 可以使用它为您构建模块,因此无需打包二进制文件。

这意味着您可以通过 cpan 完成依赖项检查,并且安装更新版本的模块或链接到奇怪位置的库变得更加容易(对于某些值 easy),并且可以使用更多的 CPAN 模块而无需任何任何人的努力。

关于使用 linux-distro 打包系统也可以提出相同的论点。如果您需要一个与发行版不同步的模块版本,那么您将陷入困境。如果你想使用更新的 Perl,你会被卡住。Perl 在 CPAN 生态系统中有自己非常好的打包系统,所以如果可以的话,使用它真的很有意义。

同时,有时使用一组提供的二进制包更明智,特别是如果您必须推出许多系统,而您的 Perl 安装只是您需要跟踪的包集合的一小部分。

于 2011-10-08T03:16:59.573 回答
4

PPD 实际上可以包含外部库(例如 XML::LibXML 的包包含 libxml2),因此它们可以更简单地安装。

PPD 已经编译,因此可以更快地安装。

由于 PPD 是由其他人准备的,因此 PPD 给您的控制较少。您仅限于可用的模块(谢天谢地,这是可用的大量模块)和可用的版本。

我通常会犹豫混合两个系统,但我从来没有遇到过在同一个版本上同时使用这两个系统的ppm问题cpan

只需使用对您来说方便的那个。

于 2011-10-08T07:53:27.427 回答