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