内部CPAN - 什么模块

jir*_*ira 5 perl cpan

我想设置内部CPAN来分发我们的内部代码.

所以我在这里推荐CPAN :: Mini.但它看起来还有其他选择,如CPAN :: Site,CPAN :: Dark,Dist :: Zilla ......

我对所有这些选择都不知所措.人们大多使用/推荐什么?

我需要的是一种将内部模块推送到存储库的方法,可以从多台机器访问.

DrH*_*yde 5

快速回答是你想使用CPAN :: Mini创建CPAN上当前所有当前镜像,然后CPAN :: Mini :: Inject将你自己的发行版添加到它.

答案很长,它有助于理解如何构建CPAN镜像.从广义上讲,它只是一个包含两个子目录的目录.

'modules'目录依次包含两个文件,03modlist.data.gz,其内容被现代CPAN客户端忽略,但是遗留代码假定该文件存在,因此只需从现有镜像中复制它.另一个是02packages.details.txt.gz,我将在后面介绍.

'authors'目录包含一个文件'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
Run Code Online (Sandbox Code Playgroud)

(你也可以看到.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
Run Code Online (Sandbox Code Playgroud)

在普通的CPAN镜像中,可能存在多个版本的分布,以及模块的多个版本 - 例如,当前版本和一些较旧版本,或者当前稳定版本和开发版本.索引文件包含最新的稳定版本.您可以告诉dev版本的发行版,因为它们的版本中有下划线,或者包含字符串'-TRIAL'.

因此,了解所有这些,您可以构建一个包含代码的CPAN-a-like .但是使用CPAN :: Mini和CPAN :: Mini :: Inject将你的东西添加到"真正的"CPAN中的工作量减少了.

一旦你创建了CPAN-a-like,你就可以在HTTP上公开它并使用任何客户端正常访问它,或者你可以在文件系统中使用它并配置CPAN客户端使用文件访问它:/ //网址