我有本地存儲的私有軟件包(通過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