我想设置内部CPAN来分发我们的内部代码。
所以我一直在看CPAN::Mini作为推荐的here。但看起来还有其他选项,例如CPAN::Site,CPAN::Dark,Dist::Zilla ...
所有这些选择让我有点不知所措。人们最常使用/推荐什么?
我需要的是一种将内部模块推送到存储库的方法,可以从多台计算机进行访问。
最佳答案
快速的答案是,您要使用CPAN::Mini创建CPAN上当前所有内容的本地镜像,然后使用CPAN::Mini::Inject向其中添加您自己的发行版。
长答案是,它有助于理解CPAN镜像的构造方式。从广义上讲,它只是一个包含两个子目录的目录。
“模块”目录依次包含两个文件03modlist.data.gz,现代CPAN客户端会忽略其内容,但是有一些旧代码假定该文件存在,因此只需从现有镜像中复制它即可。另一个是02packages.details.txt.gz,我将在后面描述。
“作者”目录包含一个文件“01mailrc.txt.gz”,该文件是过去的另一个遗物,其内容可以忽略,因此只需从另一个镜像复制它,并包含“id”目录。这又包含子目录和发行版,其名称遵循一个模式。例如,我的PAUSE ID是DCANTRELL,我的发行版之一是XML-Tiny-2.06.tar.gz,因此该文件位于.../authors/id/D/DC/DCANTRELL/XML-Tiny-2.06中。 tar.gz。
02packages.details.txt.gz文件是将模块名称映射到发行版的索引,它必须是最新的镜像才能正常工作。它由几行标题行组成,必须存在且正确,然后是空白行,每个模块都应有一行。这些行是由空格分隔的三个字段:
例如
XML::Tiny 2.06 D/DC/DCANTRELL/XML-Tiny-2.06.tar.gz
(您可能还会看到.tgz,.zip和其他coupla)
分布可能会出现在多行中,对于它包含的每个模块一次。例如
XML::Tiny::DOM 1.1 D/DC/DCANTRELL/XML-Tiny-DOM-1.1.tar.gz
XML::Tiny::DOM::Element 1.1 D/DC/DCANTRELL/XML-Tiny-DOM-1.1.tar.gz
在普通的CPAN镜像中,可能有一个发行版的多个版本,以及一个模块的多个版本-例如,当前版本和一些较旧的版本,或者当前稳定版本和dev之一。索引文件包含最新的稳定版本。您可以告诉发行版的开发版本,因为它们的版本中带有下划线或包含字符串“-TRIAL”。
因此,了解了所有这些之后,您就可以构造一个仅包含您的代码的CPAN-a-like。但是使用CPAN::Mini和CPAN::Mini::Inject将您的内容添加到“真实的” CPAN中的工作量较小。
一旦创建了CPAN-a-like,就可以在HTTP上公开它,然后像往常一样使用任何客户端访问它,或者可以将其放在文件系统中,并配置CPAN客户端以使用文件访问它:///URL。
关于perl - 内部CPAN-什么模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6648865/