如何将自定义模块分发添加到本地CPAN镜像?

时间:2011-02-24 18:47:38

标签: perl cpan dpan

我正准备设置一个完整的CPAN镜像供公司内部使用。但是,我们有几个基于内部Module::Build的内部发行版,我想通过这个镜像向人们提供这些发行版。这些发行版只能从我们的镜子中获得;它们只是内部库。基本上,一旦人们设置了他们的CPAN配置文件来加载“cpan.mycompany.com”镜像,我希望他们能够做到

cpan install MyCompany::Bundle
cpan install MyCompany::Other::Module

在他们的命令行上安装任意数量的内部自定义模块分发。理想情况下,随着这些模块分发版本的增加,所有这些版本都将由我们的内部CPAN镜像索引并可用,就像以前版本的CPAN模块可用一样。

在最初的问题之后,我能够提出一些其他的可能性。

CPAN::Inject,但看起来我无法用它来获取cpan install My::Module语法。

然后是MyCPAN::App::DPAN,它看起来也很有趣,几乎看起来像我需要的东西。有没有人有这个工具的经验?

我刚遇到的另一个是CPAN::Site。这似乎也能够设置自定义CPAN分发。有关这个工具的任何想法吗?

4 个答案:

答案 0 :(得分:5)

如果您使用CPAN::Mini创建镜像,则使用CPAN::Mini::Inject将自己的模块添加到其中。

答案 1 :(得分:1)

要使用完整的CPAN镜像执行此操作,CPAN::Site可以很好地解决这个问题。它允许您制作镜像,然后将自己的库注入其中,并提供工具来帮助您管理设置并使其保持最新。

答案 2 :(得分:0)

我想提出CPAN::Site的建议 - 如果您在CPAN RT上提出或提交错误报告,作者会做出回应并很乐意应用修补程序。

我最近一直在使用它来制作一个“micro-cpan”,它只包含特定应用程序所需的内容,而不包含cpanminus,以便在任何环境中进行安装。但是,请不要问我我的解决方案 - miyagawa ++今年是YAPC::NA,并展示了“Carton”,它完成了所有这些以及更多,方式比我的hacky更好。

CPAN::Mini::Inject可能有点过于“低级”,因为它需要在注入minicpan之前指定关于每个dist前面的大量信息 - 我觉得这几乎所有这些应该通过分析dist来自动检测,例如使用CPAN::ParseDistribution

MyCPAN::App::DPAN实际上非常酷,但有一点学习曲线,可能不适合这项工作。我还发现它有一种倾向于阻塞一些形状错误的dists并检测到涉及在日志中跋涉(据我所知 - 也许有更好的方法来做)但是,我强烈建议检查它出来了。

答案 3 :(得分:0)

如果您仍然对MyCPAN :: App :: DPAN感兴趣,我刚刚发布了如何使用它来创建一个类似CPAN的迷你目录结构,在(一个)这个问题的答案中:

Internal CPAN - what module

(我不知道在这里链接到我自己的答案是否可以。如果不是,请告诉我。)