我正准备设置一个完整的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分发。有关这个工具的任何想法吗?
答案 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的迷你目录结构,在(一个)这个问题的答案中:
(我不知道在这里链接到我自己的答案是否可以。如果不是,请告诉我。)