假设我需要在没有互联网连接的(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,但我只是找不到从本地文件包括它的依赖关系安装源包的例子。
正确的答案是由Joshua Ulrich在关于这个问题的评论中给出的:
关键是将参数添加到repos或contriburl前缀file://。因此在Unixy系统中可以做到:
install.packages("ggplot2",contriburl="file:///path/to/packages/")
这假定所有必需的源包以及PACKAGES索引文件在/ path / to / packages中可用。如果没有PACKAGES文件,则应首先使用:
library(tools) write_PACKAGES("/path/to/packages/")
这将生成在此目录中找到的所有源包的索引。请注意,在示例中,文件后面有3个斜杠:前缀。第三个斜杠表示相对于文件系统根目录的路径。
repos和contriburl参数之间的区别是,repos将附加另一个/ src / contrib到指定的路径,因为这通常是源包位于官方CRAN库镜像上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。