是否有权威的和/或事实上的文件详细说明 CPAN 的工作原理,足够详细,以至于任何人都可以使用它从头开始重建 CPAN,而无需依赖口头传统和传闻?记录目录结构、应该在分发中的文件、版本号如何真正工作、谁可以上传什么以及在 search.CPAN.org 网站上列出的确切内容等的东西?
3 回答
CPAN 只不过是一个镜像文件存储库。使用 PAUSE 上传文件。关于 PAUSE可以回答您的大部分问题(如果不是全部的话)。
您还提到了 search.cpan.org,但这不是 CPAN 的一部分。它只是访问 CPAN 的众多工具之一。网站https://metacpan.org/和命令行工具cpan
等等cpanm
。
你的问题涉及很多不同的事情......
“A”CPAN 只是一个具有一定结构和一些特殊文件的目录。结构和文件格式没有正式定义,但相当简单。有几个模块(主要在 CPAN:: 命名空间中)可以为您创建这些文件。最重要的文件是modules/02packages.details.txt.gz文件(又名“索引”),它将模块名称映射到包含它们的分发档案的路径。假设索引中的路径是相对于authors/id目录的。差不多就是这样。其他文件,如authors/01mailrc.txt.gz和modules/03modlist.data.gz必须存在并具有“有效”格式,但不需要其中包含任何真实数据——它们对于模块安装程序的基本操作不是必需的。
“The”CPAN 是一个中央 CPAN,社区在其中共享他们的发行版。作者可以通过PAUSE将他们的工作放入“CPAN”中, PAUSE执行分析分布和生成索引的工作。About页面描述了 PAUSE 如何在高层次上工作。“The”CPAN 实际上被镜像到几个不同的位置,因此您可以将安装程序指向其中的任何一个。您也可以轻松创建自己的镜像。 search.cpan.org和metacpan是建立在“the”CPAN 之上的搜索和浏览服务。因此,如果您将分发上传到 PAUSE,它(最终)也会出现在这些网站上。
但是,您实际进行分发的方式要复杂一些。同样,对于分布应该是什么样子没有正式的定义。PAUSE 实际上会接受任何东西,并且会非常努力地理解它。但几乎所有作者都使用像Module::Build或ExtUtils::MakeMaker这样的工具来完成大部分工作。这些工具将规定组织代码的约定,并可以生成帮助 PAUSE 和其他系统了解您的分发的文件。在更高的层次上,Module::Starter和Dist::Zilla等工具将为您生成更多的基础设施。你不必使用它们中的任何一个,但你应该使用至少其中之一。
如果您的目标是使用您选择的发行版构建您自己的 CPAN(可能是您自己的专有模块以及来自“CPAN”的一些开源模块),那么Pinto可能就是您正在寻找的。Pinto 将使用您想要的任何发行版构建一个类似 CPAN 的本地存储库。Pinto 知道如何处理依赖项并从上游存储库(通常是“CPAN”)获取它们。Pinto 有一些工具可以帮助您随着依赖项的发展而管理变更。而且它与现有的 Perl 模块安装程序完全兼容,因此您所要做的就是将它们“指向”您的本地存储库。
有各种项目,例如 MyCPAN、Pinto 和 StratoPAN,它们使用 PAUSE 提供的和客户期望的索引文件创建类似于 CPAN 的存储库。你想达到什么目的?