【问题标题】:How can I update someone else's module on CPAN?如何在 CPAN 上更新其他人的模块?
【发布时间】:2012-03-27 02:56:03
【问题描述】:

我从 CPAN 下载了一些模块并添加了额外的功能。我可以在 CPAN 上发布最新的模块吗?如果是,我该怎么做?有可能吗?我应该联系编写原始模块的人吗?有人可以帮助了解更新此特定模块的过程吗?

【问题讨论】:

  • 您对哪个模块感兴趣?作者是谁?

标签: perl module cpan


【解决方案1】:

除非您是共同维护者,否则您将无法上传和索引同名模块。由于现在有两个(或更多)略有不同的版本,因此以不同的名称上传它对社区来说效率不高。

  • 联系作者
  • 将您的补丁提交到模块的RT queue(或它在其文档中指定的问题跟踪器)
  • 如果它在 Github 上,请分叉项目,进行更改,然后提交拉取请求

如果作者没有回应(意思是没有回应,不是否定回应),我们有办法pass on maintainership of abandoned modules。我们采取这个过程非常缓慢,因为我们希望给原作者或当前维护者每一个机会做出回应。有些人可能会忙于工作、度假等。但是,大多数情况都很好。


您可以将任何您喜欢的内容上传到 PAUSE,但如果您不是某种维护者,PAUSE 不会将其编入索引。它仍然会显示在您的 CPAN 帐户中,人们仍然可以通过 CPAN 网站下载它,但 CPAN 客户端不会看到它(因为它们根据索引工作)。一些搜索网站会将其显示为“未经授权的发布”。

【讨论】:

  • 最近发生了一起事件,有人上传了一个名为“Test”的空发行版,导致一堆仍在使用 Test.pm 的模块开始未能通过冒烟测试。即使您不是注册作者,也可以上传模块,但不会被索引。默认情况下,CPAN 工具(cpan、cpanm 等)不会选择未编入索引的版本。但它仍然作为未经授权的版本存在,并且可以下载和安装。正如我们在那种情况下看到的那样,造成了相当混乱。在讨论这个问题的真实测试分布下有一个最近的 RT(现已关闭)。
  • “测试”事件也在 cpan-testers-discuss@perl.org 上进行了讨论。发生的情况是,一些烟雾测试人员在他们的吸烟者中安装了“未经授权的版本”,并且由于它不包含名为“plan()”的函数,突然任何人在其测试套件中上传包含 Test.pm 的模块开始在“使用”行。
【解决方案2】:

盲目地以与其所基于的模块相同的名称上传已添加功能的模块是无益的(有时会发生并且经常会造成混乱)。但是您确实有一些有用的选择:

首先,您可以联系模块的作者或维护者,通过电子邮件发送差异或补丁来显示您希望添加的内容。请务必同时提供相关文件,并解释您的理由。

模块作者可能会接受补丁并将其应用于自己的模块更新。或者,作者/维护者为了防止功能蔓延,拒绝了升级后的功能,从而导致您选择第二种选择。

第二种选择是获取您自己的 PAUSE 帐户,并继承或扩展模块。但是一定要给它你自己的新模块名称,完整的文档,并且可能在文档中解释这是 xyz 模块的扩展,具有以下附加功能......如果你正在扩展 Math::BigInt,你可能称之为 Math::BigInt::Frobcinate(只是一个例子)。

当您尝试与模块作者联系时,请耐心等待。有时需要一段时间才能让事情顺其自然。

【讨论】:

  • 我建议先查找与该发行版关联的存储库,然后再通过电子邮件向作者发送 dist。
  • 这是个好建议。此外,模块的 POD 通常会包含作者喜欢如何支持模块的信息:RT 系统、邮件列表、git 存储库、个人电子邮件或以上的某种组合都是常见的。
【解决方案3】:

我建议您尝试联系作者。

此外,您可以通过rt.cpan.org 将模块更改作为补丁上传; CPAN 上应该有来自模块网站的链接。请参阅CPAN FAQ: How do I report/fix a bug in a module/script? 此跟踪系统用于处理您的请求,而不仅仅是报告错误。

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 2016-06-01
    • 2011-11-21
    • 1970-01-01
    • 2011-04-13
    • 2011-05-17
    • 1970-01-01
    • 2017-04-03
    • 2013-09-24
    相关资源
    最近更新 更多