如何在CPAN上更新其他人的模块?



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

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

  • 联系作者
  • 将您的补丁提交到模块的RT队列(或它在文档中指定的问题跟踪器)
  • 如果它在Github上,则派生项目、进行更改并提交pull请求

如果作者没有回应(这意味着没有回应,而不是负面回应),我们有办法传递废弃模块的维护权。我们采取这个过程非常缓慢,因为我们想给原作者或当前维护者每一个回应的机会。有些人可能会忙于工作、度假等等。然而,大多数情况都很好。


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

盲目地将添加了功能的模块上传到与它所基于的模块相同的名称下是没有帮助的(这种情况有时会发生,而且经常会造成混乱)。但你确实有一些有用的选择:

首先,您可以联系模块的作者或维护人员,通过电子邮件发送diff或补丁,显示您希望添加的内容。一定要提供相关的文件,并解释你的理由。

模块作者可能会接受补丁,并将其应用于模块本身的更新。或者,为了防止蔓延的狂热,作者/维护者拒绝升级后的功能,这会让你选择第二种选择。

第二种选择是获得自己的PAUSE帐户,并对模块进行子类化或以其他方式扩展。但一定要给它自己的新模块名称、完整的文档,并可能在文档中解释这是xyz模块的扩展,具有以下附加功能。。。如果你正在扩展Math::BigInt,你可以称之为Math::比格Int::Frobcine(只是一个例子)。

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

我建议您尝试联系作者。

此外,您可以通过rt.cpan.org将模块更改作为补丁上传;CPAN上应该有一个来自模块网站的链接。请参阅CPAN常见问题解答:如何报告/修复模块/脚本中的错误?这个跟踪系统用于像您这样的请求,而不仅仅用于报告错误。

最新更新