假设我需要在一台没有网络连接的(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
,但我找不到一个从本地文件安装源软件包及其依赖项的例子。
repos="file://path/to/DVD"
可以起作用。 - Joshua Ulrich