首页 文章

导入的包不会自动安装

提问于
浏览
4

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

此程序包导入许多CRAN程序包,这些程序包不存储在本地 . 这些导入的包在安装过程中不会自动安装,从而产生错误消息 Dependency package foo not available . 用户必须手动安装 install.packages('foo') ,然后重试,只是为了得到 Dependency package bar not available ,令人作呕,即使 foobar 属于我的 Imports:

Details:

我的DESCRIPTION文件看起来像:

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') ,然后他/她得到另一个依赖不可用的错误 .

What I have tried:

根据R packages

导入:此处列出的软件包必须存在才能使您的软件包正常工作 . 事实上,无论何时安装软件包,这些软件包(如果尚未安装)都将安装在您的计算机上(devtools :: load_all()还会检查软件包是否已安装) .

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

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

我认识到这个问题不是完全可以重现的,但我无法链接到我的回购,所以我很乐意提供任何其他细节 .

**versions**
R 3.4.0, platform = x86_64-w64-mingw32
devtools 1.13.1

1 回答

  • 2

    你正在用R重塑包装 . 我建议反对 . 你可以只drat来创建一个存储库 . 这是尝试和真实的,并且有效 .

    对于本地软件包的 生产环境 以及它们的使用和安装而言,这种部署方面与保存源的位置完全正交 . 不要将源代码存储库误认为代码分发机制 .

    总而言之,在本地使用drat以及本地GitHub Enterprise实例在我们的工作中为我们工作,并且drat一般使用相当广泛 .

    (通常的免责声明就像我开始drat,但我也有很多贡献者的好运 . )

相关问题