我有本地存储的私有软件包(通过SVN进行版本控制)。为了安装这个软件包,我要求用户通过SVN更新他/她的软件包目录,然后在目录上setwd()
,然后devtools::install()
。导入的软件包不会自动安装
此软件包导入许多CRAN软件包,这些软件包不存储在本地。这些导入的软件包在安装过程中不会自动安装,这会产生错误消息Dependency package foo not available
。必须手动安装install.packages('foo')
,然后再次尝试,只得到Dependency package bar not available
用户,令人作呕,即使foo
和bar
是我Imports:
细节之中:
我的描述文件看起来像:
Package: apackage
Type: Package
Title: Package to Do Stuff
Version: 1.11111
Date: 2017-03-02
Author: C8H10N4O2
Maintainer: C8H10N4O2<[email protected]>
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
你设置上有一个私人包你自己的仓库?您的存储库是否也包含软件包的依赖关系?通常'安装。包('foo')'将从CRAN安装,但你似乎在这里做别的事情。你究竟如何配置他们的R工作空间来完成这个工作? – MrFlick
@MrFlick是的,我正在使用我自己的SVN仓库作为我的包。它不包含我导入的软件包。我会更新这个问题。感谢您的关注。 – C8H10N4O2