2010-05-25 40 views
35

我想创建一个本地R包存储库,以便我公司的用户可以从中安装软件包,系统管理员可以定期更新本地存储库。访问CRAN镜像目前被拒绝。创建一个本地R包存储库

有没有简单的方法来做到这一点?

谢谢你的时间。

编辑:我为疏忽表示歉意。该指南是我应该先看的地方。谢谢。

回答

36

是的,CRAN的副本或本地软件包的回购很容易设置。想必你想这对于Windows,以便做到这一点:

  1. 您的网络服务器创建一个顶级目录,说R/
  2. 在那里创建平常层次:R/bin/windows/contrib/2.11。如果您需要支持其他(较早的)版本,只需在2.11目录旁边创建目录2.102.9,...。
  3. 将您需要的目录(比方说,2.11)的包,然后更改到该目录,并运行以下命令生成PACKAGESPACKAGES.gz文件库:

    tools::write_PACKAGES(".", type="win.binary")

这就是它的全部功能 - 现在您可以通过指向给定地址的命令来访问存储库,例如

update.packages(repos="http://my.local.server/R", ask=FALSE) 

我甚至在R/zzz.R中为本地软件包做了更新。

编辑约五+年后:和drat包现在自动化了很多这方面,特别闪耀,如果您还使用GitHub的服务通过HTTP/HTTPS的库(但对于其他的或本地托管太有用) 。

+0

自动更新听起来很方便,但我不明白在哪里放置更新命令。我一直在玩'zzz.R'和'.onLoad',但无法通过'R CMD检查...'。在某种程度上,更新您目前正在加载的内容似乎有点奇怪。 – Backlin 2013-01-07 08:19:28

+0

可以通过任何可以访问存储库的人将update命令输入到R中。 – 2013-03-15 01:36:29

+4

除了Dirk的评论,如果你让软件包用户编辑他们的'Rprofile.site'文件(它可以在每次R会话启动时运行),以包含'options(repos = c(getOption(“repos”)) MyCompanyRepo =“http://my.local.server/R”))',那么你的用户可以执行诸如'install.packages(“mypackage”)'而不需要指向路径。 – 2013-03-18 01:19:19

2

miniCRAN也为此提供了很好的功能。关键优势在于您不需要完整的镜像,但可以仅使用您需要的软件包分发包括它们的依赖关系来设置CRAN的“迷你”镜像。

相关问题