r - 导入的包不会自动安装

标签 r devtools r-package

我有一个本地存储的私有(private)包(并通过 SVN 进行版本控制)。要安装软件包,我要求用户 SVN 更新他/她的软件包目录,然后 setwd()在目录上,然后 devtools::install() .

这个包导入了很多 CRAN 包,这些包没有存储在本地。这些导入的包在安装过程中不会自动安装,这会产生错误消息 Dependency package foo not available .用户必须手动安装install.packages('foo') ,然后再试一次,只得到Dependency package bar not available ,令人作呕,即使 foobar是我的Imports:
详情:

我的说明文件如下所示:

Package: apackage
Type: Package
Title: Package to Do Stuff
Version: 1.11111
Date: 2017-03-02
Author: C8H10N4O2
Maintainer: C8H10N4O2<C8H10N4O2@example.com>
Description: Package that does many useful things
License: file LICENSE
Depends:
    R (>= 3.3.0)
Imports:
    bit64 (>= 0.9.5),
    data.table (>= 1.9.6), 
    extrafont (>= 0.17),
    foreach(>= 1.4.3),
    ggplot2 (>= 2.0.0),
    gbm (>= 2.1),
    grid (>= 3.2.3),
    gridExtra (>= 2.0.0),
    httr (>= 1.1.0),
    readxl (>= 0.1.1),
    scales (>= 0.4.0),
    xlsx (>= 0.5.7)
LazyData: true
RoxygenNote: 5.0.1
Suggests: testthat (>= 0.9.1)

但是在调用 check()load_all()我仍然收到错误:
Error in (function (dep_name, dep_ver = NA, dep_compare = NA)  : 
  Dependency package gridExtra not available.

然后我的用户必须 install.packages('gridExtra') ,然后他/她得到另一个依赖项不可用错误。

我试过的:

根据R packages :

Imports: packages listed here must be present for your package to work. In fact, any time your package is installed, those packages will, if not already present, be installed on your computer (devtools::load_all() also checks that the packages are installed).



我还检查了Writing R Extensions但在此主题上找不到其他任何内容。

我对这些包 是否正确?应该 是自动安装的,我应该怎么做才能确保它们自动安装?

我认识到这个问题不是完全可重现的,但我无法链接到我的仓库,所以我很乐意提供任何额外的细节。
**versions**
R 3.4.0, platform = x86_64-w64-mingw32
devtools 1.13.1

最佳答案

你正在用 R 重新发明包装。我不建议这样做。你可以 drat创建一个存储库。这是经过验证的、真实的并且有效。

这个部署方面,无论是本地包的生产,还是它们的使用和安装,都与你保存源代码的位置完全正交。不要将源代码存储库误认为是代码分发机制。

总之,使用 drat本地与本地 GitHub Enterprise 实例一起为我们在工作中顺畅地工作,drat一般来说,它的使用相当广泛。

(通常的免责声明,因为我是 drat 的发起人,但我也有很多贡献者的好运。)

关于r - 导入的包不会自动安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162537/

相关文章:

r - h2o.gbm 中的树木数量

R - 根据条件在数据框中创建新列

r - 将向量分割成 block ,使得每个 block 的总和近似恒定

c++ - 包含 C++ 库的 R 包无法为窗口构建

R - 计算每列中某些值的数量

google-chrome - 在 Firefox/Chrome devtools 中有没有办法在连接后发送/编辑 websocket 消息

android - 带键盘的 Chrome 开发工具设备未显示

css - 为什么 Chrome Dev Tools 不显示 "computed"选项卡?

r - 全部加载和构建并重新加载之间的区别

r - R中加载包时引号的使用