可以说明包依赖的显式版本吗?

时间:2012-11-07 09:50:00

标签: r dependencies packages cran

对于我编写的代码,我倾向于明确而非隐含。因此,在设法创建自己的软件包之后,我立即想到的另一件事是如何最好地确保代码的健壮性和可靠性。部分原因与我的包依赖的包有关。

实际问题

在这方面:是否可以明确说明需要/期望哪个版本的包依赖?

我正在寻找不需要说明zip文件的实际路径的方法(这当然很容易实现),但只需使用install.packages“标准行为“指明包名称(可能带有一些所需版本的参考)。

尽职调查

我已经检查Writing R Extensions以查看我对Depends文件的DESCRIPTION部分的选项,希望有类似的机制用于说明所需的R版本(例如R (>= 2.15.2))。但我没有找到任何类似的包依赖:

  
    

'Depends'字段给出了这个包所依赖的逗号分隔的包名列表。包名称后面可以选择括号中的注释。注释应包含比较运算符,空格和有效的版本号。

         

如果您的包依赖于特定版本的R,您也可以使用特殊包名“R” - 例如,如果包仅适用于R版本2.11.0或更高版本,则包括'R(> = 2.11)。 0)'在'取决于'字段中。您还可以要求某个SVN版本用于R-devel或R-patched,例如: 'R(> = 2.14.0),R(> = r56550)'需要晚于2011年7月下旬的R-devel的版本(包括2.14.0的发布版本)。库和R包检查工具都使用此字段:因此,使用不正确的语法或滥用“取决于”字段对可能需要的其他软件的注释是错误的。其他依赖项(R系统外部)应列在“SystemRequirements”字段中,可能在单独的README文件中放大。

         

R INSTALL工具检查所使用的R版本是否足够用于正在安装的软件包,并且在调用库时,将在当前软件包之前附加指定的软件包列表(在检查版本要求之后)并且在安装期间准备延迟加载时。

  

然后我也看了一下install.packages并希望得到像version这样的论点,但我想没有。

声明

我完全清楚我的问题的目标可能与R的分布和安装包的理念形成对比,CRAN包存储库(至少我猜)某些软件包的新版本只是“否决”以前的版本和{{1}总是拿起最新的可用的。从最终用户隐藏版本特性也是非常有意义的,以免造成过于复杂的事情。

然而,关于尽可能编写强健代码的目标,恕我直言,明确说明事情也是有意义的。或者至少可以选择这样做。

1 个答案:

答案 0 :(得分:8)

您使用Depends。例如:

Depends: R (>= 2.15.0), foo (== 1.17-12)

会对包foo上等于1.17-12的大于或等于2.15.0 的R版本产生依赖关系。

(至少如果我理解正确的话,您要明确说明您的软件包 foo 的版本x.yy-zz。)

我不确定这对最终用户有多大帮助;您可能会强迫他们维护单独的软件包库,以便使用您的软件包来维护您规定的确切版本。