可以说明软件包的依赖关系的明确的版本?(Possible to state explicit ver

2019-08-02 09:56发布

我倾向于比隐约我写的代码,而明确。 因此,在已经成功地创建自己的包,立即使我想起接下来的事情就是如何确保我的代码的健壮性和可靠性。 其中一部分有我的包依赖于包做。

实际问题

在这方面:这可能是必需的/期望的显式声明包依赖的哪个版本?

我在寻找不需要说明的实际路径,也就是说,如何zip文件(这当然很容易成为可能),但只是利用install.packages注明包名的“标准行为” (可能具有的所需版本一些参考)。

尽职调查

我已经签写R附加软件 ,看看有什么我的选择是关于Depends一节的DESCRIPTION文件,希望对于写明所需的R版本的使用类似的机制(如R (>= 2.15.2) 但是我没有找到任何类似的包依赖关系:

在“Depends中”域给出了一个逗号分隔的软件包名清单,此包依赖。 包名称可任选随后在括号注释。 注释应该包含一个比较操作,空格和有效的版本号。

在例如,如果软件只为R版本2.11.0或更高版本,包括“R(> = 2.11.0)” - 你也可以使用特殊的包名“R”如果你的包依赖于一定的R版本在“Depends中”字段。 您也可以要求对R-devel的或R-修补,例如某些SVN版本 'R(> = 2.14.0),R(> = r56550)' 需要一个版本晚于2011年7月下旬(的R-devel的包括发布的2.14.0版本)。 这两个库,将R包检查设施使用这个字段:因此它是用语法不当或滥用“Depends中”字段,可能需要对其他软件的意见错误。 其他依赖(外部到R系统)应当在“SystemRequirements”字段,在一个单独的自述文件可能扩增被列出。

将R INSTALL设施检查如果R所使用的版本是软件包足够最近正在安装,并指定将附加软件包当前包之前(检查版本要求后)的名单,无论是在图书馆被称为和准备时在安装过程中的延迟加载。

然后我也有一脸install.packages并希望像一个version的说法,但我想没有。

放弃

我非常清楚,我的问题的目标可能通过对比,其中(至少我猜)CRAN包库某些包的新版本只是“否决”以前的和分发和安装软件包讨论R的理念install.packages()总是精选一个可用的最新一个。 这也确实让很多的意义隐藏从最终用户版本的特殊性,为了不使事情变得过于复杂。

然而,相对于写作当作可靠的代码尽可能的目标,恕我直言,这也是情理之中的事情的状态非常明确。 或者说,至少有这样做的选项。

Answer 1:

你使用Depends 。 例如:

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

将使R上的版本大于或等于2.15.0 程序包的相关foo等于1.17-12

(至少如果我理解正确的你,要明确指出你的包仅适用于版本x.yy-zz软件包foo的。)

我不知道如何有帮助这将是最终用户,虽然; 你可能会被强迫他们保持包的单独的库,以便使用你的包只是为了保持你规定的确切版本。



文章来源: Possible to state explicit versions of package dependencies?