繁体   English   中英

如何为 R package 设置本地存储库?

[英]How to setup a local repository for R package?

我想为 R package 设置本地存储库,我希望存储库像 sonatype nexus 一样工作(它可以代理中央存储库,并在从中央存储库下载工件后缓存工件)。

目前,nexus 不支持 R 存储库格式,因此它不适合我需要做的事情。

这是创建此存储库的任何现有解决方案吗? 我不想创建对我来说太重的 CRAN 镜像。

首先,您需要确保系统中有以下路径及其目录:“/R/src/contrib”。 如果您没有此路径和这些目录,则需要创建它们。 您所有的 R 包文件都将存储在“contrib”目录中。

将 package 文件添加到“contrib”目录后,您可以使用setRepositories工具 ZEFE90A8E604A7C840E88D03A67F6B7DZ 中的setRepositories function 来创建存储库。 我建议将以下代码添加到本地存储库的.Rprofile中:

utils::setRepositories(ind = 0, addURLs = c(WORK = "file://<your higher directories>/R"))

ind = 0表示您只想要本地存储库。 附加存储库可以包含在addURLs =选项中,并在字符向量中以逗号分隔。

接下来,使用以下代码创建存储库索引:

tools::write_PACKAGES("/<your higher directories>/R/src/contrib", verbose = TRUE) 

这将生成用作存储库索引的 PACKAGE 文件。

要查看存储库中有哪些包,请运行以下代码并查看生成的数据框: my_packages <- available.packages()

此时,您可以从 repo 安装包,而无需参考 package 安装文件的整个路径。 例如,要安装dplyr package,您可以运行以下命令:

install.packages("dplyr", dependencies = TRUE)

如果您想更进一步并管理不断变化的存储库,您可以安装和使用miniCRAN package。 否则,每当您的存储库更改时,您都需要执行write_PACKAGES function。

安装miniCRAN package 后,您可以执行以下代码来创建miniCRAN 存储库:

 my_packages <- available.packages()

 miniCRAN::makeRepo(
  pkgs = my_packages[,1, 
  path = "/<your higher directories>/R",
  repos = getOption("repos"), 
  type = "source",
  Rversion = R.version, 
  download = TRUE, 
  writePACKAGES = TRUE,
  quiet = FALSE
 )

您只需要为每个 repo 执行一次上面的代码。

然后,检查以确保已创建每个 miniCRAN 存储库。 您只需为每个 repo 执行一次:

 pkgAvail(
  repos = getOption("repos"),
  type = "source",
  Rversion = R.version,
  quiet = FALSE
 )

每当将新的 package 文件放入本地存储库时,您可以按如下方式更新本地存储库的索引:

miniCRAN::updateRepoIndex("/<your higher directories>/R/")

最后,作为查看新 package 是否在索引中的可选步骤,创建可用包的数据框并搜索数据框:

my_packages <- available.packages(repos = "file://<your higher directories>/R/")

这种方法对我来说效果很好,但也许其他人有可以改进的意见和建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM