我正在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
构建程序包而不进行依赖性检查,而不删除Import
文件中的Depends
和DESCRIPTION
条目?
咨询--help
后,我尝试了--no-test-load
选项,但没有运气。
答案 0 :(得分:5)
我估计你想在没有安装所有依赖项的计算机上构建包的.zip二进制版本。而且我担心我不得不让你失望,因为这是不可能的。
构建二进制包分两步完成:首先从源安装包(这就是你必须使用R CMD INSTALL
的原因,然后创建的二进制文件以方便的格式压缩以便安装一台Windows机器。从源代码安装时检查依赖项,任何缺少的依赖项都会抛出你所面临的错误。
由于R在从源代码安装时需要来自依赖项的信息,因此在构建整个项目之前,您无法安装它们。这也是有道理的。 R中安装的软件包包含一组.rds文件,其中包含更方便R格式的软件包信息。为了为NAMESPACE文件创建该信息,它需要能够访问从中导入函数的软件包。如果没有,它就无法构造有关命名空间的正确信息。
因此,您唯一的选择是在用于构建的计算机上安装依赖项。如果您真的想在该计算机上使用该软件包,那么您无论如何都必须安装这些依赖项。
更多信息: R Internals: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