【发布时间】:2011-02-23 17:47:03
【问题描述】:
我想创建一个本地 R 包存储库,以便我公司的用户可以从中安装包,并且系统管理员可以定期更新本地存储库。目前拒绝访问 CRAN 镜像。
有没有简单的方法来做到这一点?
【问题讨论】:
我想创建一个本地 R 包存储库,以便我公司的用户可以从中安装包,并且系统管理员可以定期更新本地存储库。目前拒绝访问 CRAN 镜像。
有没有简单的方法来做到这一点?
【问题讨论】:
是的,CRAN 的副本或带有本地包的 repo 都很容易设置。大概你想要这个适用于 Windows,所以这样做:
R/
R/bin/windows/contrib/2.11。如果您需要支持其他(早期)版本,只需在2.11 目录旁边创建目录2.10、2.9、...。将您需要的包放入目录(例如2.11),然后切换到该目录并运行以下命令为存储库生成PACKAGES 和PACKAGES.gz 文件:
tools::write_PACKAGES(".", type="win.binary")
这就是它的全部内容——现在您可以通过指向给定命令的地址来访问存储库,例如
update.packages(repos="http://my.local.server/R", ask=FALSE)
我什至在 R/zzz.R 中为本地软件包执行此操作,以便它们自行更新。
大约五年后编辑:drat 包现在可以自动完成很多工作,特别是如果您还使用 GitHub 通过 http/https 服务存储库(但对于其他或本地托管)。
【讨论】:
zzz.R 和.onLoad,但无法让它通过R CMD check ...。在某种程度上,更新您当前正在加载的内容似乎有点奇怪。
Rprofile.site 文件(在每个 R 会话启动时运行)以包含类似 options(repos = c(getOption("repos"), MyCompanyRepo= "http://my.local.server/R")) 的内容,那么您的用户可以这样做install.packages("mypackage") 之类的东西,无需指向路径。
file:/... 形式(一个斜线,两个斜线,三个斜线,......)它应该可以工作,因为我们实际上只是传递对我们告诉 R 写入和复制的目录的引用。所以请做一些测试,如果你发现我们的文档是从提交问题单的文件中找到的。
.Rprofile 为我的drat repo 完成了工作并确保了 RStudio 兼容性:options( repos = c( getOption("repos"), my_drat = "https://petermeissner.github.io/drat", CRAN = "https://cran.rstudio.com/", CRANextra = "http://www.stats.ox.ac.uk/pub/RWin" ) )
【讨论】:
包miniCRAN 也为此提供了强大的功能。关键优势是您不需要完整镜像,但可以设置 CRAN 的“迷你”镜像,其中仅包含您需要的包分发,包括它们的依赖项。
【讨论】: