CPAN::Meta::History::Meta_1_2 - META.yml 的 1.2 版元数据规范
这是 META.yml 文件 1.2 版规范的历史副本,版权归 Ken Williams 所有,并根据与 Perl 相同的条款许可。
与原始版本的修改
各种拼写更正
包含来自 Module::Build 0.2611 的有效许可证列表,而不是链接到模块,并对文本和链接进行了一些小的更新以反映发布时的版本。
修复了一些指向活动资源的失效链接。
--- #YAML:1.0
name: Module-Build
abstract: Build and install Perl modules
version: 0.20
author:
- Ken Williams <[email protected]>
license: perl
distribution_type: module
requires:
Config: 0
Cwd: 0
Data::Dumper: 0
ExtUtils::Install: 0
File::Basename: 0
File::Compare: 0
File::Copy: 0
File::Find: 0
File::Path: 0
File::Spec: 0
IO::File: 0
perl: 5.005_03
recommends:
Archive::Tar: 1.00
ExtUtils::Install: 0.3
ExtUtils::ParseXS: 2.02
Pod::Text: 0
YAML: 0.35
build_requires:
Test: 0
urls:
license: https://dev.perl5.cn/licenses/
meta-spec:
version: 1.2
url: http://module-build.sourceforge.net/META-spec-v1.2.html
generated_by: Module::Build version 0.20
本文档描述了 META.yml 规范的 1.2 版本。
META.yml 文件描述了贡献的 Perl 发行版的重要属性,例如在 CPAN 上找到的那些。它通常由 Module::Build、Module::Install 和 ExtUtils::MakeMaker 等工具创建。
META.yml 文件中的字段旨在帮助维护模块集合(如 CPAN)的人员、编写安装工具(如 CPAN.pm 或 CPANPLUS)的人员,或者只是想在下载和开始安装发行版之前了解一些有关发行版的信息的人员。
注意:此规范的最新稳定版本始终可以在 http://module-build.sourceforge.net/META-spec-current.html 中找到,而最新开发版本(可能包含不会进入稳定版本的内容)始终可以在 http://module-build.sourceforge.net/META-spec-blead.html 中找到。
META.yml 文件使用 YAML 格式编写(参见 http://www.yaml.org/)。
查看以下链接,了解我们为什么选择 YAML 而不是 XML 或 Data::Dumper
这是 META.yml 规范描述的主要对象。在本文件上下文中,它通常指的是为其他开发人员使用而分发的模块、脚本和/或文档的集合。
这指的是一个可重用的代码库,通常包含在一个文件中。目前,我们主要讨论 perl 模块,但此规范应该足够开放,可以应用于其他语言(例如 python、ruby)。
某些字段需要版本规范(例如 "requires"、"recommends"、"build_requires" 等)。本节详细介绍了当前支持的版本规范。
如果列出了单个版本,则该版本被认为是最小支持版本。
如果版本号为 0,则支持任何版本。
此外,对于更复杂的依赖关系,规范支持版本列表,每个版本可以选择在前面加上关系运算符。
支持的运算符包括 <(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)和 !=(不等于)。
如果给出了列表,则从左到右进行评估,以便列表中与先前规范冲突的任何规范都被后面的规范覆盖。
示例
>= 1.2, != 1.5, < 2.0
从 1.2 版开始的任何版本,除了 1.5 版,并且早于 2.0 版。
META.yml 文件的第一行应该是有效的 YAML 文档头,例如 "--- #YAML:1.0"
。
META.yml 文件的其余部分是一个大的 YAML 映射,其键在此处描述。
示例
meta-spec:
version: 1.2
url: http://module-build.sourceforge.net/META-spec-v1.2.html
(规范 1.1) [必需] {URL} 此字段指示所用 META.yml 规范版本的地址。
示例
name: Module-Build
(规范 1.0) [必需] {字符串} 分发包的名称,通常通过获取分发包中的“主模块”并将“::”更改为“-”来创建。但是,有时它完全不同,例如 libwww-perl 分发包(参见 http://search.cpan.org/author/GAAS/libwww-perl/)。
示例
version: 0.20
(规范 1.0) [必需] {版本} META.yml 文件所指的分发包的版本。
示例
abstract: Build and install Perl modules.
(规范 1.1) [必需] {字符串} 对分发包目的的简短描述。
示例
author:
- Ken Williams <[email protected]>
(规范 1.1) [必需] {字符串列表} 一个 YAML 序列,指示分发包的作者。首选形式是作者姓名 <电子邮件地址>。
示例
license: perl
(规范 1.0) [必需] {字符串} 此分发包可被使用和重新分发的许可证。
必须是以下许可证之一
该分发包可以与 perl 本身相同的条款复制和重新分发(这是 CPAN 上模块最常见的许可选项)。这是一个双重许可证,用户可以选择 GPL 版本 1 或 Artistic 版本 1 许可证。
该分发包是在 GNU 通用公共许可证版本 2 的条款下分发的 (http://opensource.org/licenses/GPL-2.0).
该分发包是在 GNU 宽通用公共许可证版本 2 的条款下分发的 (http://opensource.org/licenses/LGPL-2.1).
该发行版根据 Artistic 许可证版本 1 授权,如标准 Perl 发行版中的 Artistic 文件所指定 (http://opensource.org/licenses/Artistic-Perl-1.0).
该发行版根据 BSD 3-Clause 许可证授权 (http://opensource.org/licenses/BSD-3-Clause).
该发行版根据列在 http://www.opensource.org/licenses/ 的其他开放源代码倡议批准的许可证授权。
该发行版根据未经 www.opensource.org 批准但允许无限制分发的许可证授权。
未经作者和/或版权所有者特别许可,不得重新分发该发行版。
示例
distribution_type: module
(Spec 1.0) [可选] {字符串} 此发行版中包含的内容类型。CPAN 上的大多数内容都是 module
(也可以指模块集合),但有些内容是 script
。
不幸的是,此字段基本上毫无意义,因为许多发行版都是多种内容的混合体,或者是一些新的东西,或者根据使用者的不同而主观地侧重点不同。Module::Build 和 MakeMaker 等工具可能会停止生成此字段。
示例
requires:
Data::Dumper: 0
File::Find: 1.03
(Spec 1.0) [可选] {映射} 一个 YAML 映射,指示此发行版正常运行所需的 Perl 模块。键是模块名称,值是版本规范,如 Module::Build 中的 "requires" 参数所述。
示例
recommends:
Data::Dumper: 0
File::Find: 1.03
(Spec 1.0) [可选] {映射} 一个 YAML 映射,指示此发行版为了增强操作而推荐的 Perl 模块。
替代方案:向用户展示哪些功能依赖于哪些模块可能是有益的,以便他们可以就安装哪些推荐模块做出明智的决定。
示例
optional_features:
- foo:
description: Provides the ability to blah.
requires:
Data::Dumper: 0
File::Find: 1.03
- bar:
description: This feature is not available on this platform.
excludes_os: MSWin32
(Spec 1.1) [可选] {映射} 一个 YAML 序列,包含满足其要求时可用的可选功能的名称。对于每个功能,都提供描述以及任何 "requires"、"build_requires"、"conflicts"、requires_packages
、requires_os
和 excludes_os
,它们在此子上下文中具有与本文档其他地方描述的相同含义。
示例
build_requires:
Data::Dumper: 0
File::Find: 1.03
(Spec 1.0) [可选] {映射} 一个 YAML 映射,指示构建和/或测试此发行版所需的 Perl 模块。安装模块后,不需要这些依赖项。
示例
conflicts:
Data::Dumper: 0
File::Find: 1.03
(Spec 1.0) [可选] {映射} 一个 YAML 映射,指示在安装此发行版时无法安装的 Perl 模块。这种情况很少见。
示例
dynamic_config: 0
(规范 1.0) [可选] {布尔值} 一个布尔标志,指示在构建此发行版时是否必须执行 *Build.PL* 或 *Makefile.PL*(或类似文件),或者是否可以仅通过查阅其元数据文件来构建、测试和安装。如果您的模块在构建/安装过程中执行了一些动态配置(提出问题、感知环境等),则将此值设置为 true 的主要原因。
目前 Module::Build 实际上并没有对这个标志做任何处理 - 它可能需要由像 CPAN 这样的更高级别的工具来做一些有用的事情。它有可能带来很多安全、打包和便利性的改进。
如果省略此字段,则默认为 1(true)。
(已弃用) (规范 1.0) [可选] {映射} 此字段已重命名为 "no_index"。见下文。
示例
provides:
Foo::Bar:
file: lib/Foo/Bar.pm
version: 0.27_02
Foo::Bar::Blah:
file: lib/Foo/Bar/Blah.pm
Foo::Bar::Baz:
file: lib/Foo/Bar/Baz.pm
version: 0.3
(规范 1.1) [可选] {映射} 一个 YAML 映射,描述此发行版提供的所有包。此信息可以(在某些情况下是)由发行版和自动化机制(如 PAUSE、CPAN 和 search.cpan.org)用于构建索引,说明在哪个发行版中可以找到各种包。
当使用像 Module::Build 这样的工具,可以自动为您的发行版生成 provides
映射时,请确保检查它生成的內容,以确保它有意义 - 索引器通常会信任 provides
字段(如果存在),而不是扫描发行版文件本身来找出包和版本。这是一件好事,因为这意味着您可以使用 provides
字段来精确地告诉索引器您希望索引发行版的哪些内容,而不是依赖它们来猜测您希望索引的内容。
示例
no_index:
file:
- My/Module.pm
dir:
- My/Private
package:
- My::Module::Stuff
namespace:
- My::Module::Stuff
(规范 1.1) [可选] {映射} 一个 YAML 映射,描述任何对搜索和索引工具不感兴趣的私有(即实现工件)文件、目录、包和命名空间。当没有 provides
字段时,这很有用。
(注意:我不确定谁实际查看此字段,或者他们到底用它做什么。此规范可能与实际使用情况有所不同。)
(规范 1.1) [可选] 排除任何列出的文件。
(规范 1.1) [可选] 排除列出目录下的所有内容。
(规范 1.1) [可选] 排除列出的包。
(规范 1.1) [可选] 排除列出命名空间下的所有内容,但不包括列出的命名空间本身。
示例
keywords:
- make
- build
- install
(Spec 1.1) [可选] {列表} 描述此发行版的关键词/短语序列。
示例
resources:
license: https://dev.perl5.cn/licenses/
homepage: http://sourceforge.net/projects/module-build
bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build
MailingList: http://lists.sourceforge.net/lists/listinfo/module-build-general
(Spec 1.1) [可选] {映射} 与此发行版相关的任何 URL 资源的映射。所有小写键,例如 homepage
、license
和 bugtracker
,由本规范保留,因为它们在本规范中具有定义的“官方”含义。如果您想添加自己的“特殊”条目(如上面的“MailingList”条目),请使用至少一个大写字母。
当前的官方键集是
此项目在网络上的官方主页。
此发行版许可证的官方声明的 URL。
此项目的错误跟踪器(例如 Bugzilla 或 RT 队列)的 URL。
示例
generated_by: Module::Build version 0.20
(Spec 1.0) [必需] {字符串} 指示用于创建此 META.yml 文件的工具。最好同时包含工具名称及其版本,但此字段本质上是不透明的,至少目前是这样。如果 META.yml 是手动生成的,建议在此处指定作者。
[注意:我用来收集有关 META.yml 使用情况统计信息的 meta_stats.pl 脚本更喜欢上面列出的形式,即它在 /\s+version\s+/ 上拆分,将第一个字段作为生成文件的工具名称,第二个字段作为该工具的版本。RWS]
创建了此文档的 1.0 版。
添加了 "dynamic_config" 字段,该字段在初始版本中缺失。
添加了更多 YAML 理念文章。
将指向 YAML 讨论主题的现有链接修复为指向新的 http://nntp.x.perl.org/group/ 站点。
添加并弃用了 "private" 字段。
添加了 "abstract"、configure
、requires_packages
、requires_os
、excludes_os
和 "no_index" 字段。
版本升级。
添加了 generation
、authored_by
字段。
在 "recommends" 字段中添加备选提案。
添加 requires_build_tools
字段的提案。
添加指向 CPAN 上此规范最新版本的链接。
添加了 "版本规范" 部分。
将名称从 Module::Build::META-spec 更改为 CPAN::META::Specification。
添加 auto_regenerate
字段的提案。
添加 index
字段作为 "no_index" 的补充。
添加 "keywords" 字段作为帮助搜索发行版的工具。
添加 "术语" 部分来解释某些可能含糊不清的术语。
删除了一些从未真正支持的项目(generation、requires_build_tools、requires_packages、configure、requires_os、excludes_os、auto_regenerate),它们更像是头脑风暴的记录。
将 authored_by
更改为 "author",因为这始终是实际 META.yml 文件中使用的名称。
将 "==" 运算符添加到支持的版本检查运算符列表中。
指出 "distribution_type" 字段基本上毫无意义,不应该真正使用。
澄清了 "dynamic_config"。
删除了名称 CPAN::META::Specification
,因为它暗示了一个实际上不存在的模块。