如何告诉CRAN自动安装软件包依赖项?


69

我在R中开发了一个软件包,当我在本地计算机中检查并构建它时,它可以正常工作。但是,当我在CRAN中尝试时,出现了程序包依赖性错误。我的程序包取决于其他程序包的两个功能。

如果我在descriptionusingDepends或之下列出了其他软件包imports,是否会与新软件包一起自动安装?还是我需要install.packages("packagename")在使用其他软件包的函数下显式调用该函数。如果这一切都是错误的,那么解决软件包依赖关系的最佳方法是什么,R以便通过R CMD checkbuild测试并提交给CRAN?

谢谢。


4
是的,列表中的其他软件包后Depends:您的DESCRIPTION文件
安东尼达米科

一个简单的测试方法是X从系统中删除软件包,并查看软件包是否X从Depends安装。
csgillespie 2013年

Answers:


79

在您自己的系统上,尝试

install.packages("foo", dependencies=...)

dependencies=参数记录为

dependencies: logical indicating to also install uninstalled packages
      which these packages depend on/link to/import/suggest (and so
      on recursively).  Not used if ‘repos = NULL’.  Can also be a
      character vector, a subset of ‘c("Depends", "Imports",
      "LinkingTo", "Suggests", "Enhances")’.

      Only supported if ‘lib’ is of length one (or missing), so it
      is unambiguous where to install the dependent packages.  If
      this is not the case it is ignored, with a warning.

      The default, ‘NA’, means ‘c("Depends", "Imports",
      "LinkingTo")’.

      ‘TRUE’ means (as from R 2.15.0) to use ‘c("Depends",
      "Imports", "LinkingTo", "Suggests")’ for ‘pkgs’ and
      ‘c("Depends", "Imports", "LinkingTo")’ for added
      dependencies: this installs all the packages needed to run
      ‘pkgs’, their examples, tests and vignettes (if the package
      author specified them correctly).

所以你可能想要一个值TRUE

在您的软件包中,列出所需的内容Depends:,请参阅《 Writing R Extensions》手册,对此非常清楚。


@德克,谢谢。但是现在我知道问题出在哪里了。当我R CMD checkR-forge其上运行时,linux-x86-64平台存在程序包依赖性错误。但没有错误windowsmac OS。错误消息如下所示: using platform: x86_64-unknown-linux-gnu (64-bit) * checking package dependencies ... ERROR Packages required but not available: ‘isa2’ ‘fabia’
Mikael 2013年

...而如果我取出包裹怎么办?我想删除所有依赖项,只要其他已经安装的软件包不需要它们?
7kemZmani'9

1
@andi:通常不是那么简单。如果依赖项需要在您的平台上进行编译(或者CRAN坚持要求下载的版本是源版本,即使在其他地方可能有二进制发行版),则依赖项的安装也会失败。例如,xgboost为此而臭名昭著。
smci

3

另一种可能性是选中R软件包安装程序右下角的Install Dependencies复选框:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.