1.1.1 文件“DESCRIPTION”
文件”DESCRIPTION”包括包的如下基本信息:
Package: pkgname
Version: 0.5-1
Date: 2004-01-01
Title: My First Collection of Functions
Author: Joe Developer <Joe.Developer@some.domain.net>, with
contributions from A. User <A.User@whereever.net>.
Maintainer: Joe Developer <Joe.Developer@some.domain.net>
Depends: R (>= 1.8.0), nlme
Suggests: MASS
Description: A short (one paragraph) description of what
the package does and why it may be useful.
License: GPL (>= 2)
URL:
http://www.r-project.org,
http://www.another.url
续上一行的文字(比如,用一行写不完的描述性文字)是以一个空格或tab开始的。字段‘Package’, ‘Version’, ‘License’, ‘Description’, ‘Title’, ‘Author’, 和‘Maintainer’是必须有的,其它的字段(‘Date’, ‘Depends’, ‘URL’, . . . )是可选的。
为了达到最大化的可移植性,文件”DESCRIPTION”应当完全用ASCII字符书写。
字段”Package”和”Version”分别指出包的名称和版本。名称应当由字母、数字和点组成,并且以字母开头。版本号应当是由”.”或”-”分开的至少有2个(通常是3个)非负整数的序列。上面的例子所示的就是其规范形式,并且像“0.01”或“0.01.0”之类的版本号会被处理成“0.1-0”。(翻译包允许形如“Translation-11”的名字。)
字段“License”应当按以下的标准形式指明包的授权(license)。竖杠(“|”)表示任选其中的一项。单个的授权说明文字必须是下列之一:
• 标准的短授权文字中的一个:GPL-2 GPL-3 LGPL-2 LGPL-2.1 LGPL-3 AGPL-3 Artistic-1.0 Artistic-2.0
就像
http://www.r-project.org/Licenses/或者包含在R的源或安装目录下的子目录“share/licenses”中那样。
• 自由或开放软件授权的缩写的名称,就像包含在R的源或安装目录下子目录下的数据库文件‘share/licenses/license.db’中的授权。它可能(在版本化的授权中)还伴随一个“(op v)”形式的授权版本的限制,其中op是‘<’, ‘<=’, ‘>’, ‘>=’, ‘==’,或‘!=’中的一个比较运算符,v是版本号(用‘.’隔开的非负整数),授权版本限制还可以通过“,”来进行组合(参看下面的例子)。对于版本化的授权(versioned licenses),也可以在版本号后指明授权的名称,或者通过‘-’将一个授权的缩写与版本名称组合起来。如果必要,更多的自由(参见:
http://www.fsf.org/licenses/license-list.html)或开放软件(参见:
http://www.opensource.org/licenses/bsd-license.php))的授权也可以加进来。
• “file LICENSE”或”file LICENCE”中的一个字符串来指名一个在包的最高目录(源或安装目录)中名为“LICENSE”或“LICENCE”的文件。
• 字符串“Unlimited”,用来表示除了相关法律规定外,没有任何散布或使用上的限制
下面是一些标准的授权说明文字:
License: GPL-2
License: GPL (>= 2) | BSD
License: LGPL (>= 2.0, < 3) | Mozilla Public License
License: GPL-2 | file LICENCE
请特别注意,”Public domain”不是一个有效的授权。这个在你包含这些信息时是很重要的!否则,在其它人散布包的拷贝的时候,它甚至不能被合法地纠正。
字段“Description”应当综述包的功能。可以用好几个句子,但只能有一个段落。
字段“Title”应当对包进行一个简短的描述。一些包的列表有总的大小限制,可能会把标题(Title)截断为65个字符。不要使用标记(markup),不要续行,不要以句号结尾。老版本的R使用一个单独的文件“TITLE”来标题信息,现在不允许这么做,并且“Title”字段在文件“DESCRIPTION”中是必需的。
字段“Author”描述包的作者。它是一段供人阅读的清晰的文字,并不会被用作自动处理(比如读取所有列出的捐献者的email地址)。
字段“Maintainer”应当给出一个名字和一个包括在尖括号的有效的email地址(用来发送bug报告等)。不应当以句号或逗号结尾。
可选字段“Data”用来指明当前版本的包的发行日期。强烈建议使用ISO标准的日期格式:yyyy-mm-dd。
可选字段“Depends”用来指明这个包所依赖的其它包,用逗号隔开。包的名称后面可以加一段用圆括号括起来的注释。注释中应当包含一个比较运算符(在R 2.7.0以前的版本中只支持“>=”和“<=”)、空格和有效的版本号(甚至在它们只是包的一部分的时候,也要把包的名字列出来)。如果你的包是依赖于特殊的版本的时候,你也可以使用特殊的包的名称“R”。比如,如果这个包只能在R的2.4.0及其以后的版本上运行,就在“Depends”字段中包含“R(>=2.4.0)”。library命令和R的包的验证程序将使用这个字段,因此不恰当的句法或滥用“Depends”字段来注释可能会用到的其它程序是不对的。所依赖的其它的环境(R系统的外部)应当列在“SystemRequirements”字段或者在一个单独的”README”文件中。在R的INSTALL程序将检查R的版本是否适用于正在安装的包,并且包的列表在加载当前包之前(在版本检查后)会被加载来,在调用library和保存包的代码的镜像(image)或者修复一个超时的加载(lazy-loading)时都会执行这样的操作。
从R2.7.0开始,一个包(或“R”)可以多次出现在“Depends”中,但只有第一个出现的才能被早期版本的R使用。(不幸的是所有出的都将被检查,所以只有”>=”和”<=”可以使用)
可选字段“Imports”列出了需要从中引入命名空间但又不需要加载的包的名称,通过”::”或”:::”操作符来访问的命名空间必须列在这或列在“Suggests”、“Enhances”中(见下面)。最理想的是这个字段包含所有标准的包,并且它的引用包括用作S4的包(因为它们的类的定义是可以改变的,这样,当其发生时,“DESCRIPTION”文件就可以用来决定哪些包需要重新安装)。
可选字段“Suggests”,使用与“Depends”相同的句法,它列出那些不是必需的包。这些包包括那些仅仅在例子、简述(见1.4节)和在函数体中被加载的包。比如,假设包foo中有个例子需要用到包bar中的一个数据集,这样在普通的使用中包bar就不是必需的,除非想要执行这个例子:最好是加载包bar,但它不是必需的。
最后,可选字段“Enhances”列出了即将被这个包增强的包,比如为来自这些包的类提供方法。
一般的原则是