假设我需要在没有互联网连接的(Linux)机器上安装许多软件包。让我们说,我下载了一个cran的副本,并将其刻录到我带到离线位置的DVD上:
wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz
我甚至可以添加一个PACKAGES文件,其中包含所有源包及其依赖关系的概述:
library(tools)
write_PACKAGES()
我如何使用这个离线安装源包以这样一种方式依赖解决和安装从本地文件?例如,有人想要安装软件包ggplot2,它有一个相当深的依赖结构。假定ggplot2的源包和它的所有依赖都可用作当前工作目录中的源包。如果我做:
install.packages("ggplot2_0.9.1.tar.gz", repos=NULL)
这将导致错误,因为依赖关系根本没有解决。或者:
install.packages(list.files(pattern="*.tar.gz"), repos=NULL)
但是,这也忽略了依赖结构,并尝试按字母顺序安装包,这也将失败。
我调查了available.packages和contrib.url,但我只是找不到从本地文件包括它的依赖关系安装源包的例子。