强制 R 包版本依赖的上限
Enforce upper bound for R Package version dependency
在开发 R 包时,我们使用 DESCRIPTION 文件来列出包依赖项(例如,在“导入”部分)并且我们可以指定 minimum 所需的版本每个包的依赖性都加上“(>= x.x.x)”后缀。但是,指定 maximum 版本的类似功能是什么?
一些上下文
有时我们依赖的外部包发布时带有重大更改,可能不再与正在开发的包兼容。每次使用重大更改更新外部包时更新我们的包是不可持续的。
示例
假设我正在开发一个名为“MarksPackage”的 R 包,它依赖于“dplyr”。到目前为止,我构建的所有内容都适用于 dplyr v1 的当前状态。但是,明天 dplyr v2 将发布,其中 重大更改 会影响我的包。对于正在安装我的软件包的新用户,可能已经安装了最新的 dplyr v2,因此 MarksPackage 对他们不起作用。
每次使用重大更改更新 dplyr 时,我不一定想要或能够去更新我的包。我宁愿指定一个最大版本,甚至是一个版本范围,我知道 MarksPackage 可以为此工作。
如何在 DESCRIPTION 文件中完成此操作?是否有这样的语法:
Package: MarksPackage
Imports:
dplyr (>= 0.8.5 & <=1.2.0),
dbplyr,
tidyr (<= 1.0.2)
每当您对 R 扩展包的工作原理有疑问时,您应该查阅 Writing R Extensions 手册。
特别是这里,你想要Section 1.1.3, Package Dependencies,这在相关部分
中解释
The ‘Depends’ field gives a comma-separated list of package names which this package depends on. Those packages will be attached before the current package when library or require is called. Each package name may be optionally followed by a comment in parentheses specifying a version requirement. The comment should contain a comparison operator, whitespace and a valid version number, e.g. ‘MASS (>= 3.1-20)’.
...
A package or ‘R’ can appear more than once in the ‘Depends’ field, for example to give upper and lower bounds on acceptable versions.
因此,对于您的示例,您会这样做
Package: MarksPackage
Imports:
dplyr (>= 0.8.5),
dplyr (<= 1.2.0),
dbplyr,
tidyr (<= 1.0.2)
在开发 R 包时,我们使用 DESCRIPTION 文件来列出包依赖项(例如,在“导入”部分)并且我们可以指定 minimum 所需的版本每个包的依赖性都加上“(>= x.x.x)”后缀。但是,指定 maximum 版本的类似功能是什么?
一些上下文
有时我们依赖的外部包发布时带有重大更改,可能不再与正在开发的包兼容。每次使用重大更改更新外部包时更新我们的包是不可持续的。
示例
假设我正在开发一个名为“MarksPackage”的 R 包,它依赖于“dplyr”。到目前为止,我构建的所有内容都适用于 dplyr v1 的当前状态。但是,明天 dplyr v2 将发布,其中 重大更改 会影响我的包。对于正在安装我的软件包的新用户,可能已经安装了最新的 dplyr v2,因此 MarksPackage 对他们不起作用。 每次使用重大更改更新 dplyr 时,我不一定想要或能够去更新我的包。我宁愿指定一个最大版本,甚至是一个版本范围,我知道 MarksPackage 可以为此工作。
如何在 DESCRIPTION 文件中完成此操作?是否有这样的语法:
Package: MarksPackage
Imports:
dplyr (>= 0.8.5 & <=1.2.0),
dbplyr,
tidyr (<= 1.0.2)
每当您对 R 扩展包的工作原理有疑问时,您应该查阅 Writing R Extensions 手册。 特别是这里,你想要Section 1.1.3, Package Dependencies,这在相关部分
中解释The ‘Depends’ field gives a comma-separated list of package names which this package depends on. Those packages will be attached before the current package when library or require is called. Each package name may be optionally followed by a comment in parentheses specifying a version requirement. The comment should contain a comparison operator, whitespace and a valid version number, e.g. ‘MASS (>= 3.1-20)’.
...
A package or ‘R’ can appear more than once in the ‘Depends’ field, for example to give upper and lower bounds on acceptable versions.
因此,对于您的示例,您会这样做
Package: MarksPackage
Imports:
dplyr (>= 0.8.5),
dplyr (<= 1.2.0),
dbplyr,
tidyr (<= 1.0.2)