从本地仓库安装R软件包(所有.tar.gz文件都已下载到那里)

时间:2016-11-02 22:29:40

标签: r install.packages

澳大利亚的早上好,

由于我们的计算机无法访问互联网,我已要求我们的IT经理下载所有R包并将其放在共享网络位置。我将这4GB的包转移到我的本地目录后: 的 E:/R-3.3.1/MyRPackages/src/contrib / ______的tar.gz

我希望我的软件包能够安装在 E:\ R-3.3.1 \ library

我使用的是Windows 7 Professional,64位,以及RStudio和R版本3.3.1(2016-06-21)。

我只想安装.packages并从我的本地仓库安装一个包,包括它的所有依赖项。

我已经尝试过阅读并尝试了几个install.packages命令的排列,但我没有运气。例如,

  

install.packages(" E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz" ;, dependencies = TRUE,repos = NULL)

错误:依赖关系' httr',' memoise',' whisker',' digest',' rstudioapi' ,' jsonlite',' git2r',' withr'不适用于包装' devtools' *删除' E:/R-3.3.1/library/devtools' install.packages中的警告:   运行命令"" E:/R-33〜1.1 / bin / x64 / R" CMD INSTALL -l" E:\ R-3.3.1 \ library" " E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz"'有状态1 install.packages中的警告:   安装包'E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz'具有非零退出状态

  

install.packages(" E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz" ;, dependencies = TRUE,repos = NULL,lib = " E:/R-3.3.1/library")

错误:依赖关系' httr',' memoise',' whisker',' digest',' rstudioapi' ,' jsonlite',' git2r',' withr'不适用于包装' devtools' *删除' E:/R-3.3.1/library/devtools' install.packages中的警告:   运行命令"" E:/R-33〜1.1 / bin / x64 / R" CMD INSTALL -l" E:\ R-3.3.1 \ library" " E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz"'有状态1 install.packages中的警告:   安装包'E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz'具有非零退出状态

  

install.packages(" E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz" ;, dependencies = TRUE,repos = NULL,lib = " E:/R-3.3.1/library" ;, type =" source")

错误:依赖关系' httr',' memoise',' whisker',' digest',' rstudioapi' ,' jsonlite',' git2r',' withr'不适用于包装' devtools' *删除' E:/R-3.3.1/library/devtools' install.packages中的警告:   运行命令"" E:/R-33〜1.1 / bin / x64 / R" CMD INSTALL -l" E:\ R-3.3.1 \ library" " E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz"'有状态1 install.packages中的警告:   安装包'E:/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz'具有非零退出状态

2 个答案:

答案 0 :(得分:2)

跟进@ rosscova的回答:有各种工具可用于确定包的完整递归依赖关系集。通过更多的工作,你可以写一个脚本来抓住它们(这确实很可能是由某人完成的,已经在某个地方......)

## dependencies=TRUE 
devtools::package_deps("devtools",dependencies=TRUE)
(p <- package_deps("devtools",dependencies=TRUE))
Needs update -----------------------------
 package       installed available remote
 curl          1.2       2.2       CRAN  
 evaluate      0.9       0.10      CRAN  
 gmailr        NA        0.7.1     CRAN  
 hunspell      NA        2.1       CRAN  
 irlba         2.1.1     2.1.2     CRAN  
 openssl       0.9.4     0.9.5     CRAN  
 R6            2.1.3     2.2.0     CRAN  
 rmarkdown     1.0       1.1       CRAN  
 stringi       1.1.1     1.1.2     CRAN 

这可能有点误导,因为(?package_deps

  

'print()'方法识别不匹配        (如果有的话)每个依赖项的本地和CRAN版本之间        包;

这意味着要获取完整的依赖项列表,您需要直接打印p$package

p$package
 [1] "assertthat"    "base64enc"     "BH"            "BiocInstaller"
 [5] "bitops"        "brew"          "caTools"       "colorspace"   
 [9] "covr"          "crayon"        "curl"          "devtools"     
[13] "dichromat"     "digest"        "doParallel"    "evaluate"     
[17] "foreach"       "formatR"       "ggplot2"       "git2r"        
[21] "gmailr"        "gridBase"      "gtable"        "highr"        
[25] "htmltools"     "httr"          "hunspell"      "igraph"       
[29] "irlba"         "iterators"     "jsonlite"      "knitr"        
[33] "labeling"      "lazyeval"      "lintr"         "magrittr"     
[37] "markdown"      "memoise"       "mime"          "munsell"      
[41] "NMF"           "openssl"       "pkgmaker"      "plyr"         
[45] "praise"        "R6"            "RColorBrewer"  "Rcpp"         
[49] "registry"      "reshape2"      "rex"           "rmarkdown"    
[53] "rngtools"      "roxygen2"      "rstudioapi"    "rversions"    
[57] "scales"        "stringdist"    "stringi"       "stringr"      
[61] "testthat"      "tibble"        "whisker"       "withr"        
[65] "xml2"          "xtable"        "yaml"      

答案 1 :(得分:0)

如果没有互联网连接,您还需要让IT经理下载相关性包,并按适当的顺序安装它们。当您将repos = NULL传递给install.packages函数时,无处可查找这些依赖项。

由于这些依赖关系中的每一个都可能具有自己的*依赖关系,这可能最终成为您的IT经理屁股的主要痛苦(是的,我在澳大利亚也是如此!)。我建议您安排在您的机器上临时连接互联网吗?否则,也许看看Packrat,它应该(我之前没有自己使用过)让IT经理创建一个项目,其中包含您需要的软件包(包括它们的依赖项)。然后,您可以使用它在您的计算机上安装软件包。

  • 例如,devtools所依赖的包httr本身取决于mimecurlopensslR6 ... {{然后继续依赖mime ......然后我们走下兔子洞......