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

时间:2012-03-09 16:42:31

标签: perl module cpan

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

3 个答案:

答案 0 :(得分:20)

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

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

如果作者没有反应(这意味着没有回复,而不是否定回复),我们就有办法pass on maintainership of abandoned modules。我们非常缓慢地采用这个过程,因为我们希望给原始作者或当前维护者一个机会做出回应。有些人可能会在工作,度假等方面淹没。但是,大多数情况都很顺利。


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

答案 1 :(得分:15)

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

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

模块作者可能会接受补丁并将其应用于模块本身的更新。或者可能是通过防止爬行特征,作者/维护者拒绝升级的功能,这会引导您进入第二种选择。

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

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

答案 2 :(得分:10)

我建议您尝试联系作者。

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