代码之家  ›  专栏  ›  技术社区  ›  Esben Eickhardt

R: 如何脱机安装软件包和依赖项

  •  0
  • Esben Eickhardt  · 技术社区  · 6 年前

    首先,我知道关于这个话题的另一篇文章,但它并不能解决我的问题。

    Offline install of R package and dependencies

    我需要在一台离线的Ubuntu机器上安装一些包,但是依赖关系一直在出错。

    首先,我使用以下代码(在在线ubuntu机器上)下载所有包和依赖项:

    # Loading library
    library(tools)
    
    # Function for downloading packages and dependencies
    getPackages <- function(packs){
      packages <- unlist(
        tools::package_dependencies(packs, available.packages(),
                                    which=c("Depends", "Imports"), recursive=TRUE)
      )
      packages <- union(packs, packages)
      packages
    }
    
    # Determining what packages to download
    packages <- getPackages(c("tidyverse", "data.table", "RODBC", "RJDBC", "fasttime", "tidyr", "knitr", "randomForest", "RMySQL", "jsonlite"))
    
    # Downloading packages
    download.packages(pkgs = packages, destdir = "/path/to/packages/")
    
    # Writing files such that this folder can be used as a repository
    write_PACKAGES("/path/to/packages/")
    

    其次,我使用以下命令在脱机计算机上安装软件包,如链接的post所示。

    # Installs local packages
    install.packages(c("tidyverse", "data.table", "RODBC", "RJDBC", "fasttime", "tidyr", "knitr", "randomForest", "RMySQL", "jsonlite"), contriburl = "file:///path/to/packages/") 
    

    发生的情况是,安装在几个包上工作,然后随着消息崩溃。

    ERROR: dependency ‘dplyr’ is not available for package ‘tidyr’
    * removing ‘/home/h52z/R/x86_64-pc-linux-gnu-library/3.4/tidyr’
    ERROR: dependencies ‘dplyr’, ‘tidyr’ are not available for package ‘tidyverse’
    * removing ‘/home/h52z/R/x86_64-pc-linux-gnu-library/3.4/tidyverse’
    Warning messages:
    1: In install.packages(c("tidyverse", "data.table", "RODBC", "RJDBC",  :
      installation of package ‘dplyr’ had non-zero exit status
    2: In install.packages(c("tidyverse", "data.table", "RODBC", "RJDBC",  :
      installation of package ‘tidyr’ had non-zero exit status
    3: In install.packages(c("tidyverse", "data.table", "RODBC", "RJDBC",  :
      installation of package ‘tidyverse’ had non-zero exit status
    

    尽管使用 工具 图书馆。这将是一个很大的工作,必须找出自己的程序包安装顺序。

    你有什么建议吗?我必须使用像这样的工具吗 小型起重机 ,还是需要像在另一个链接中的示例那样下载整个CRAN存储库?

    1 回复  |  直到 6 年前
        1
  •  1
  •   MrFlick    6 年前

    我建议 miniCRAN 尤其是 pkgDep 函数来处理所有依赖项。例如

    library(miniCRAN)
    
    pkgs <- c("tidyverse", "data.table", "RODBC", "RJDBC", "fasttime", "tidyr", 
        "knitr", "randomForest", "RMySQL", "jsonlite")
    pkgList <- pkgDep(pkgs, type = "source", suggests = FALSE)
    makeRepo(pkgList, path="/path/to/packages/", type = c("source"))
    

    然后从repo安装

    install.packages(pkgs, repos="file://path/to/packages/", type="source")