簡體   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