R:如何离线安装包和依赖项
R: How do I install packages and dependencies offline
首先,我知道关于该主题的其他 post,但它没有解决我的问题。
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/")
其次,我使用以下命令在离线机器上安装软件包,如 linked 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
尽管使用 tools 库创建了本地存储库,但安装程序似乎无法处理依赖项。这将是一项繁重的工作,必须自己找出软件包的安装顺序。
你有什么建议吗?我是否必须使用像 miniCRAN 这样的工具,或者我是否需要像另一个 link 中的示例那样下载整个 CRAN 存储库?
我建议 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"))
然后您可以使用
从存储库安装
install.packages(pkgs, repos="file://path/to/packages/", type="source")
首先,我知道关于该主题的其他 post,但它没有解决我的问题。
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/")
其次,我使用以下命令在离线机器上安装软件包,如 linked 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
尽管使用 tools 库创建了本地存储库,但安装程序似乎无法处理依赖项。这将是一项繁重的工作,必须自己找出软件包的安装顺序。
你有什么建议吗?我是否必须使用像 miniCRAN 这样的工具,或者我是否需要像另一个 link 中的示例那样下载整个 CRAN 存储库?
我建议 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"))
然后您可以使用
从存储库安装install.packages(pkgs, repos="file://path/to/packages/", type="source")