加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

离线安装R包和依赖包

发布时间:2020-12-14 01:09:40 所属栏目:百科 来源:网络整理
导读:假设我需要在没有互联网连接的(Linux)机器上安装许多软件包。让我们说,我下载了一个cran的副本,并将其刻录到我带到离线位置的DVD上: wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz 我甚至可以添加一个PACKAGES文件,其中包含所有源包及其依
假设我需要在没有互联网连接的(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库镜像上。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读