[英]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.