【问题标题】:Does every Perl module in a distribution need to have a version number?发行版中的每个 Perl 模块都需要有版本号吗?
【发布时间】:2013-01-21 02:16:02
【问题描述】:

我正在维护一个包含 100 多个 .pm 文件的 CPAN 发行版。他们每个人都需要有一个 $VERSION,还是可以只将它包含在主模块中?

对于发行版中的其他模块,包含或不包含 $VERSION 有什么影响?

如果它与问题相关,人们应该只“使用”这个发行版中的主模块。而且,就这个问题而言,我不是在问如何在任何文件中指定它,只是是否以任何形式存在。 p>

【问题讨论】:

  • 根据经验,很多模块不会将版本号放在每个.pm 文件中。如果你做一个快照包(b in cpanp),你会看到。就个人而言,我不喜欢这样(所以我模块中的所有.pm 文件都带有相同版本的版本标记),但是有很多模块(人)以其他方式执行此操作。最糟糕的问题是当一个模块更新但有些没有更新时,CPANPLUS 认为该模块已经过时,即使安装最新版本并没有改变任何东西。目前我有 5 个这样的模块,我非常想将它们全部删除!
  • @JonathanLeffler:这对我来说似乎是一个答案,你介意将它作为一个答案发布吗?
  • 需要,不。这是一件好事而且微不足道,因此不值得做吗?是的。
  • @IlmariKaronen:你的愿望就是我的命令。

标签: perl cpan perl-module


【解决方案1】:

根据经验,许多模块不会将版本号放在每个.pm 文件中。如果你做一个快照包(b in cpanp)并查看生成的文件,你会看到。在我的机器上,添加了 lots 模块的 Perl 5.16.2 的快照包含 7962 个模块,但其中 2070 个模块包含“undef”作为版本(因此大约四分之一的版本使用 undef) .

我个人不喜欢这样,所以我模块中的所有 .pm 文件 — DBD::Informix — 在每个版本中都带有相同版本的版本标记(当前版本是 2013.0118,所有 .pm文件标有 2013.0118 作为版本号),但有很多模块(人)不这样做。

  • 您不必为每个 .pm 文件提供版本号。
  • 总的来说,最好为每个.pm 文件提供一个版本号。
  • 我认为为分发中的所有 .pm 文件提供相同的版本号是明智的。

在我看来,最糟糕的问题出现在模块更新但有些部分没有更新时,因此 CPANPLUS 认为该模块已过时,即使安装最新版本并没有改变任何东西。目前我有 5 个这样的模块,我非常想将它们全部删除,尤其是因为我并没有真正使用它们。 (有时,这是由安装在新位置的文件触发的,但我认为这不是唯一的原因。我不确定还有什么触发它,但这是一个周期性发生的问题。)

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 2018-02-01
    • 2011-10-10
    • 2017-02-03
    • 2011-03-28
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多