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