在没有互联网连接的情况下在 R 中安装包和所有依赖项

问题描述 投票:0回答:2

我在 tgz 中有所有的包,我想安装 sparklyr:

install.packages(pkgs = "sparklyr_0.9.2.tar.gz",
                 lib = getwd(),
                 verbose = T,
                 repos = NULL,
                 dependencies = TRUE)
system (cmd0): /opt/cloudera/extras/R-3.3.1/lib/R/bin/R CMD INSTALL
ERROR: dependencies ‘broom’, ‘r2d3’, ‘purrr’, ‘forge’ are not available for package ‘sparklyr’
* removing ‘/home/afranco/Paquetes/sparklyr’

但在同一个文件夹中,我有包‘broom’、‘r2d3’、‘purrr’、‘forge’。所以我想使用这种方法安装一些包,但我没有任何类型的互联网连接。

r install.packages
2个回答
1
投票

r-bloggers 帖子中的说明将为您提供所需的所有信息: 如何在没有互联网的情况下安装软件包

这里是关于依赖的部分:

在办公室:下载依赖项 知道我们需要的包是一回事,但知道它们依赖于哪些包是另一回事,知道这些依赖项依赖于哪些包是……好吧,不值得考虑——R 有一个函数可以为我们做这件事,叫做 package_dependencies ().

这是一个简短的示例脚本,它使用 package_dependencies() 来找出我们要使用的包的依赖关系。

#' Get package dependencies
#'
#' @param packs A string vector of package names
#'
#' @return A string vector with packs plus the names of any dependencies
getDependencies <- function(packs){
      dependencyNames <- unlist(
        tools::package_dependencies(packages = packs, db = available.packages(), 
                                    which = c("Depends", "Imports"),
                                    recursive = TRUE))
      packageNames <- union(packs, dependencyNames)
      packageNames
    }
    # Calculate dependencies
    packages <- getDependencies(c("tidyverse", "mangoTraining"))

然后我们可以为我们将要训练的环境下载正确的包类型。我们的客户通常使用 Windows,因此我们会下载“win.binary”类型。我们还将保存包文件名,以便以后可以按文件名安装它们。

# Download the packages to the working directory.
# Package names and filenames are returned in a matrix.
setwd("D:/my_usb/packages/")
pkgInfo <- download.packages(pkgs = packages, destdir = getwd(), type = "win.binary")
# Save just the package file names (basename() strips off the full paths leaving just the filename)
write.csv(file = "pkgFilenames.csv", basename(pkgInfo[, 2]), row.names = FALSE)

现场:安装软件包 假设我们已经将软件包下载到 USB 记忆棒或类似设备,在现场且没有互联网连接的情况下,我们现在可以从磁盘安装软件包。

# Set working directory to the location of the package files
setwd("D:/my_usb/packages/")

# Read the package filenames and install
pkgFilenames <- read.csv("pkgFilenames.csv", stringsAsFactors = FALSE)[, 1]
install.packages(pkgFilenames, repos = NULL, type = "win.binary")

0
投票

我试过这种方法来下载和安装包和依赖项。下载没问题。能够下载包及其依赖项。但是在安装时,它不会先安装依赖项。我们可以在没有互联网的情况下在实际包之前安装依赖项吗?

© www.soinside.com 2019 - 2024. All rights reserved.