内容

名称

CPAN::Meta::History::Meta_1_1 - META.yml 的 1.1 版本元数据规范

前言

这是 META.yml 文件的 1.1 版本规范的历史副本,版权所有 Ken Williams,并根据与 Perl 本身相同的条款许可。

与原始版本的修改

描述

本文档描述了 META.yml 规范的 1.1 版本。

META.yml 文件描述了贡献的 Perl 发行版的重要属性,例如在 CPAN 上找到的那些。它通常由 Module::BuildExtUtils::MakeMaker 等工具创建。

META.yml 文件中的字段旨在帮助维护模块集合(如 CPAN)的人员,编写安装工具(如 CPANCPANPLUS)的人员,或者只是想在下载和开始安装之前了解有关发行版的一些信息的人员。

格式

META.yml 文件使用 YAML 格式编写。我们选择 YAML 而不是 XML 或 Data::Dumper 的原因在 这个 MakeMaker 邮件列表的帖子 中讨论。

META.yml 文件的第一行应该是一个有效的 YAML 文档头,例如 "--- #YAML:1.0"

字段

META.yml 文件的其余部分是一个大的 YAML 映射,其键在此处描述。

name

示例:Module-Build

发行版的名称。通常通过获取发行版中的“主模块”并将“::”更改为“-”来创建。但是,有时它完全不同,例如 libwww-perl 发行版。

version

示例:0.16

META.yml 文件所指的发行版的版本。这是必填字段。

版本本质上是一个任意字符串,但必须仅包含 ASCII 字符,并且强烈建议采用整数点数字数字格式,即 25.57,可选地后跟下划线数字数字,即 25.57_04

处理模块分发的标准工具(PAUSE、CPAN 等)通过使用连字符 (-) 字符连接 'name' 和 'version' 属性来为每个发行版形成一个标识符。准备处理没有版本号的发行版的工具通常也会省略连字符。

license

示例:perl

许可证的描述性术语... 不具有权威性,但必须与 README、文档等中的许可证声明一致。

此发行版可以使用和重新分发的许可证。

必须是以下许可证之一

perl

该发行版可以根据与 perl 本身相同的条款复制和重新分发(这是 CPAN 上模块最常见的许可选项)。这是一个双重许可证,用户可以选择 GPL 版本 1 或 Artistic 版本 1 许可证。

gpl

该发行版根据 GNU 通用公共许可证版本 2 的条款进行分发 (http://opensource.org/licenses/GPL-2.0)。

lgpl

该发行版根据 GNU 小通用公共许可证版本 2 的条款进行分发 (http://opensource.org/licenses/LGPL-2.1)。

artistic

该发行版根据 Artistic License 版本 1 授权,如标准 perl 发行版中的 Artistic 文件所指定 (http://opensource.org/licenses/Artistic-Perl-1.0)。

bsd

该发行版根据 BSD 3-Clause 许可证授权 (http://opensource.org/licenses/BSD-3-Clause)。

open_source

该发行版根据列在 http://www.opensource.org/licenses/ 上的某些其他获得开放源代码倡议批准的许可证授权。

unrestricted

该发行版根据 www.opensource.org 未批准但允许无限制分发的许可证授权。

restrictive

未经作者和/或版权所有者特别许可,不得重新分发该发行版。

license_uri

这应该包含一个 URI,其中可以找到许可证的确切条款。

(将“unrestricted”更改为“redistributable”?)

distribution_type

示例:module

此发行版中包含什么类型的内容。CPAN 上的大多数内容都是module(这也可能意味着模块的集合),但有些内容是script

此字段基本上毫无意义,工具(如 Module::Build 或 MakeMaker)将来可能会停止生成它。

private

这里发生了什么?

index_ignore:任何索引发行版内容的应用程序(PAUSE、search.cpan.org)都应该忽略这些项目(包、文件、目录、命名空间层次结构)。

requires

示例

Data::Dumper: 0
File::Find: 1.03

一个 YAML 映射,指示此发行版正常运行所需的 Perl 模块。键是模块名称,值是版本规范,如 Module::Build 的“requires”参数文档 中所述。

注意:像 ">= 1.2, != 1.5, < 2.0" 这样的复杂规范的具体性质可能会发生变化。这里会提前通知。像 "1.2" 这样的简单规范不会改变格式。

recommends

示例

Data::Dumper: 0
File::Find: 1.03

一个 YAML 映射,指示此发行版推荐用于增强操作的 Perl 模块。

build_requires

示例

Data::Dumper: 0
File::Find: 1.03

一个 YAML 映射,指示构建和/或测试此发行版所需的 Perl 模块。安装模块后,这些依赖项不再需要。

conflicts

示例

Data::Dumper: 0
File::Find: 1.03

一个 YAML 映射,指示在安装此发行版时无法安装的 Perl 模块。这种情况很少见。

- 可能需要单独列出测试时的先决条件,复杂之处包括:测试是否可以有意义地保留以供以后运行?测试时的先决条件是除了构建时的先决条件,还是独占的?

- 为已安装的 *发行版* 制定官方位置,其中可以包含测试等。

dynamic_config

示例:0

一个布尔标志,指示是否必须执行 Build.PLMakefile.PL(或类似文件),或者此模块是否可以仅通过查阅其元数据文件来构建、测试和安装。如果您的模块在构建/安装过程中执行一些动态配置(例如询问问题、感知环境等),则将此标志设置为真值的主要原因。

目前 Module::Build 实际上没有对这个标志做任何处理 - 可能需要更高层的工具,比如 CPAN.pm 来做一些有用的事情。它有可能带来很多安全、打包和便利性方面的改进。

generated_by

示例:Module::Build version 0.16

指示用于创建此 META.yml 文件的工具。最好同时包含工具名称和版本,但此字段本质上是不透明的,至少目前是这样。

Ingy 的建议

short_description

添加为字段,包含摘要,最大 80 个字符,建议最小 40 个字符

description

摘要的较长版本,应该添加吗?

成熟度

alpha,beta,gamma,成熟,稳定

作者 ID,所有者 ID
分类,关键字,章节 ID
更多信息的 URL

可以在 PAUSE 上默认设置为 search.cpan.org

命名空间

可以通过在前面加上点分隔形式来为单个元素指定命名空间,例如“com.example.my_application.my_property”。META.yml 的默认命名空间可能是“org.cpan.meta_author”或类似的。我认为 Apple 的 Carbon 命名空间是这种做法的先例。

历史