我想创建一个本地R包存储库,以便我公司的用户可以从中安装软件包,系统管理员可以定期更新本地存储库。访问CRAN镜像目前被拒绝。创建一个本地R包存储库
有没有简单的方法来做到这一点?
谢谢你的时间。
编辑:我为疏忽表示歉意。该指南是我应该先看的地方。谢谢。
我想创建一个本地R包存储库,以便我公司的用户可以从中安装软件包,系统管理员可以定期更新本地存储库。访问CRAN镜像目前被拒绝。创建一个本地R包存储库
有没有简单的方法来做到这一点?
谢谢你的时间。
编辑:我为疏忽表示歉意。该指南是我应该先看的地方。谢谢。
是的,CRAN的副本或本地软件包的回购很容易设置。想必你想这对于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的库(但对于其他的或本地托管太有用) 。
包miniCRAN也为此提供了很好的功能。关键优势在于您不需要完整的镜像,但可以仅使用您需要的软件包分发包括它们的依赖关系来设置CRAN的“迷你”镜像。
自动更新听起来很方便,但我不明白在哪里放置更新命令。我一直在玩'zzz.R'和'.onLoad',但无法通过'R CMD检查...'。在某种程度上,更新您目前正在加载的内容似乎有点奇怪。 – Backlin 2013-01-07 08:19:28
可以通过任何可以访问存储库的人将update命令输入到R中。 – 2013-03-15 01:36:29
除了Dirk的评论,如果你让软件包用户编辑他们的'Rprofile.site'文件(它可以在每次R会话启动时运行),以包含'options(repos = c(getOption(“repos”)) MyCompanyRepo =“http://my.local.server/R”))',那么你的用户可以执行诸如'install.packages(“mypackage”)'而不需要指向路径。 – 2013-03-18 01:19:19