【问题标题】:Creating a local R package repository创建本地 R 包存储库
【发布时间】:2011-02-23 17:47:03
【问题描述】:

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

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

【问题讨论】:

    标签: r r-package


    【解决方案1】:

    是的,CRAN 的副本或带有本地包的 repo 都很容易设置。大概你想要这个适用于 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 服务存储库(但对于其他或本地托管)。

    【讨论】:

    • 自动更新听起来很方便,但是不明白更新命令放在哪里。我一直在玩zzz.R.onLoad,但无法让它通过R CMD check ...。在某种程度上,更新您当前正在加载的内容似乎有点奇怪。
    • 任何可以访问存储库的人都可以在 R 中键入更新命令。
    • 进一步了解 Dirk 的 cmets,如果您让软件包用户编辑他们的 Rprofile.site 文件(在每个 R 会话启动时运行)以包含类似 options(repos = c(getOption("repos"), MyCompanyRepo= "http://my.local.server/R")) 的内容,那么您的用户可以这样做install.packages("mypackage") 之类的东西,无需指向路径。
    • 已经完成了,但我目前没有 Windows 框可以确认。如果你有正确的file:/... 形式(一个斜线,两个斜线,三个斜线,......)它应该可以工作,因为我们实际上只是传递对我们告诉 R 写入和复制的目录的引用。所以请做一些测试,如果你发现我们的文档是从提交问题单的文件中找到的。
    • @TommyO'Dell 的代码对我不起作用(也许是 Windows 的东西?)。将以下内容放入.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" ) )
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      miniCRAN 也为此提供了强大的功能。关键优势是您不需要完整镜像,但可以设置 CRAN 的“迷你”镜像,其中仅包含您需要的包分发,包括它们的依赖项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-29
        • 2015-10-19
        • 2022-01-12
        • 2011-08-09
        • 2015-08-19
        • 2018-04-30
        • 2016-02-11
        • 1970-01-01
        相关资源
        最近更新 更多