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

w7t8yxp5  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(103)

早上好,澳大利亚。
由于我们工作的电脑不能上网,我让我们的IT经理下载所有的R软件包,并将它们放在一个共享的网络位置。我已经将这些4GB的软件包转移到了我的本地目录:E:/R-3.3.1/MyRPackages/src/contrib/_. tar. gz
我希望我的软件包安装在E:\R-3.3.1\library
我正在使用Windows 7专业版,64位,沿着RStudio和R版本3.3.1(2016 - 06 - 21)。
我只是想安装. packages并从我的本地仓库安装一个包,包括它的所有依赖项。
我已经试着阅读了这方面的内容,并尝试了安装. packages命令的几种排列,但我没有运气。例如,

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

错误代码:dependencies 'httr','memoise','whisker','footer','rstudioapi','jsonlite','git2r','withr' are not available for package 'devtools'* removing 'E:/R-3.3.1/library/devtools'安装. packages中的警告:正在运行命令"" E:/R-33~1.1/bin/x64/R "CMD ALL-l" E:\R-3.3.1\library "" E:安装包中的错误/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'had status 1 Warning in install. packages:installation of package' 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")**

错误代码:dependencies 'httr','memoise','whisker','footer','rstudioapi','jsonlite','git2r','withr' are not available for package 'devtools'* removing 'E:/R-3.3.1/library/devtools'安装. packages中的警告:正在运行命令"" E:/R-33~1.1/bin/x64/R "CMD ALL-l" E:\R-3.3.1\library "" E:安装包中的错误/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'had status 1 Warning in install. packages:installation of package' 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")**

错误代码:dependencies 'httr','memoise','whisker','footer','rstudioapi','jsonlite','git2r','withr' are not available for package 'devtools'* removing 'E:/R-3.3.1/library/devtools'安装. packages中的警告:正在运行命令"" E:/R-33~1.1/bin/x64/R "CMD ALL-l" E:\R-3.3.1\library "" E:安装包中的错误/R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'had status 1 Warning in install. packages:installation of package' E:“R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz”具有非零退出状态

xlpyo6sf

xlpyo6sf1#

继续@rosscova的回答:有各种各样的工具可以确定一个包的完整递归依赖集。再多做一点工作,你就可以写一个脚本来获取它们(这确实很可能已经有人在某个地方完成了......)

## dependencies=TRUE 
(p <- remotes::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"


再给点提示。

抓取包tarball +依赖的配方组件

  • 获取依赖项:tools::package_dependencies("pkgname", recursive = TRUE)
  • 在CRAN上查找最新版本:available.packages()["pkgname", "Version"]
  • 构造URL:paste/sprintf/glue[MIRROR]/src/contrib/[PKGNAME]_[VERSION].tar.gz
  • download.file()
  • tar()

然后参见this answer安装远端的部件。

holgip5t

holgip5t2#

如果没有互联网连接,您还需要让IT经理下载依赖包,并以适当的顺序安装它们。当您将repos = NULL传递给install.packages函数时,它无法查找这些依赖项。
由于这些依赖项中的每一个都可能有它们自己的依赖项 *,这可能最终会成为您的IT经理的一大难题(是的,我也在澳大利亚!).我可以建议你安排一个临时连接到互联网上你的机器?否则,也许可以看看Packrat,应(我自己以前没有使用过)允许您的IT经理使用您需要的软件包创建项目(包括它们的依赖项)。然后你可以使用它来安装你的机器上的软件包。

  • 例如,devtools依赖的httr包,它本身依赖于mimecurlopensslR6. mime然后又依赖于tools.

相关问题