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