【问题标题】:How to use R CMD Install without dependencies check?如何在没有依赖项检查的情况下使用 R CMD 安装?
【发布时间】:2016-02-19 19:13:56
【问题描述】:

我在 Windows 计算机上运行 R CMD INSTALL --build package。我的包导入了几个其他包,它们本身依赖于更多包。我在本地 r_libs 文件夹中安装了所有依赖项,一切正常。

现在有时我在另一台 Windows 计算机上拥有我的包源代码。在这台计算机上,我没有安装所有依赖包。

当我尝试使用R CMD INSTALL --build package 时,我得到了明显的“ERROR: dependencies 'package a', 'package b', etc, are not available for package"”。

我的问题是:我可以使用R CMD INSTALL --build 构建包而不进行依赖检查,并且不删除DESCRIPTION 文件中的ImportDepends 条目吗?

咨询--help 后,我尝试了--no-test-load 选项,但没有成功。

【问题讨论】:

  • 不确定我是否理解,您要安装包而不安装依赖项吗?
  • @nicola OP 想要在不安装所有依赖项的情况下构建 Windows 二进制文件。 AFAIK 这是不可能的。
  • @JorisMeys,正确。我做了更多实验,发现我可以在 R 中使用 install.packages("package", repos=NULL, type='source', INSTALL_opts="--build") 来完成。但是,如果可以使用 R CMD INSTALL 完成,我仍然会感兴趣?
  • 对不起,我之前的评论不正确。 install.packages 也不这样做。也许@JorisMeys 是正确的,这是不可能的?
  • 我认为(但我不是 100% 确定)二进制文件需要您在 NAMESPACE 文件中导入的函数才能正确构建所有内容。如果您首先在具有依赖项的计算机上构建二进制文件,然后使用 R CMD INSTALL 在没有依赖项的计算机上安装它,它将安装但不会使用install.packages 加载。所以我认为 R 根本无法在没有依赖项的情况下构建。

标签: r


【解决方案1】:

我认为您想在未安装所有依赖项的计算机上构建软件包的 .zip 二进制版本。恐怕我会让你失望,因为这是不可能的。

构建二进制包分两步完成:首先从源代码安装包(这就是您必须使用R CMD INSTALL 的原因,然后将创建的二进制文件以方便的格式压缩,以便在 Windows 机器上安装。依赖项在安装时从源代码进行检查,任何缺少的依赖项都会引发您面临的错误。

由于 R 在从源代码安装时需要来自依赖项的信息,因此您无法在构建整个东西之前安装它们。这也是有道理的。 R 中已安装的包包含一组 .rds 文件,其中包含 R 格式更方便的包信息。为了为 NAMESPACE 文件创建该信息,它需要能够访问从中导入函数的包。如果不是,它就无法构造有关命名空间的正确信息。

因此,您唯一的选择是在您用于构建的计算机上安装依赖项。如果您真的想在该计算机上使用该软件包,则无论如何都必须安装这些依赖项。

更多信息: R 内部:https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Package-Structure

编写 R 扩展:https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Package-namespaces

【讨论】:

  • 解释清楚,对于持续集成的目的很重要!
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2019-11-04
  • 2018-06-03
  • 1970-01-01
  • 2013-03-24
  • 2012-04-12
相关资源
最近更新 更多