创建本地R包存储库

har*_*hal 42 r r-package

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

有一个简单的方法吗?

Dir*_*tel 43

是的,可以轻松设置CRAN的副本或具有本地软件包的repo.大概你想要这个用于Windows,所以这样做:

  1. 比如说,在你的网络服务器上创建一个顶级目录 R/
  2. 在那里创建通常的层次结构:R/bin/windows/contrib/2.11.如果您需要支持其他(更早)的版本,只需创建目录2.10,2.9......旁边的2.11目录.
  3. 将所需的包放入目录(例如2.11),然后切换到该目录并运行以下命令为存储库生成PACKAGESPACKAGES.gz文件:

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

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

update.packages(repos="http://my.local.server/R", ask=FALSE)
Run Code Online (Sandbox Code Playgroud)

我甚至R/zzz.R为本地包做了这些,以便他们自己更新.

编辑大约五年+以后:drat包现在可以实现很多自动化,尤其是如果你也使用GitHub通过http/https服务存储库(但对其他或本地托管也很有用).

  • 继Dirk的评论之后,如果你让软件包用户编辑他们的`Rprofile.site`文件(在每个R会话的启动时运行)包含类似`options(repos = c(getOption("repos"),MyCompanyRepo) ="http://my.local.server/R"))`,然后您的用户可以执行诸如`install.packages("mypackage")之类的操作,而无需指向路径. (4认同)