首页 > 解决方案 > 如何使用 github 子模块在 github 上发布 R 包?

问题描述

我在 github 上有一个 R 包。这个 R 包具有 C++ 依赖项,我包含在/src.

我通常会这样做(在 R 之外)的正确方法是在 github repo 中创建子模块,它可以链接到正确的提交作为依赖项。

在 R 中这样做的问题是这些子目录将被解释为“空”并且安装将无法正常工作,例如

> devtools::install_github("reponame/packagename")
* checking for file 'bambi/DESCRIPTION' ... OK
* preparing 'packagename':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
...

因此,checking for empty or unneeded directories导致错误,因为子模块被解释为空子目录。因此,它找不到必要的依赖项,并且我会遇到致命错误build

(1) 是的,解决此问题的一种方法是将依赖项物理地放在 R 包中。不过,这确实违背了子模块的目的,这些子模块非常有用。

(2) 使用以下论点似乎有效:

devtools::install_git("reponame/packagename", args="--recursive")

问题在于,这不是默认行为。我对从运行devtools::install_git("reponame/packagename")但没有阅读自述文件中的细则的用户那里收到数十个 github 问题感到紧张

(3) 有没有更好的方法?使用子模块将 R 包发布为 github 存储库的标准方法是什么?

标签: rgithubgit-submodulesr-package

解决方案


推荐阅读