【问题标题】:Include github packages as imports in DESCRIPTION在说明中包含 github 包作为导入
【发布时间】:2016-02-19 05:49:51
【问题描述】:

我正在使用 devtools,我在 github 上有一些包。我想在它们之间创建依赖关系,所以当我运行install_github(...) 时,也会安装在DESCRIPTION 文件中列为Imports 的其他github 包。我可以这样做吗?或者还有其他人会做的事情吗?

目前,如果我向 Imports 添加一个在 CRAN 上不可用的包,我只会在运行 install_github 时收到一条消息“正在跳过...包不可用:xxx”。

【问题讨论】:

  • (我不知道。)所以你想让install_github 检查DESCRIPTION 文件中的依赖关系并安装它们?根据帮助页面,“依赖项”参数将被传递给devtools::install。我认为您应该包含生成警告或错误的完整代码。
  • 正如我所说,我不知道答案,但我想到的问题是你是否在调用中设置了 dependencies=TRUE 并且在你的“repos”中有 'github'-URL " options() 的值。
  • 可以这样做如果你使用包,例如存储在drat存储库中---你可以在GitHub上免费获得。
  • 现在已经被很多人使用了。您甚至可以让 CRAN 包参考 Suggests:通过 Addtional_Repositories:指向这样一个 drat 存储库。

标签: r packages devtools


【解决方案1】:

您可以使用Remotes: 在说明文件中添加 github 依赖项,如下所示:

Imports:
    mypackage
Remotes:
    mygithub/mypackage

请参阅https://cran.r-project.org/web/packages/devtools/vignettes/dependencies.html 了解如何添加非 github 依赖项。

【讨论】:

    【解决方案2】:

    尝试从 github 安装 R 的包加载器听起来像 rabbit hole

    相反,在您的 package's .onload() 方法中使用类似的内容。

    # install these from github, not CRAN:
    pkglist <- list(
        c(name='ggplus',url='guiastrennec/ggplus'),
        c(name='DT',url='rstudio/DT'))
    
    for(pkg in pkglist)
        if(!suppressWarnings(suppressPackageStartupMessages(require(pkg['name'],
            quietly=TRUE,character.only=TRUE)))){
            devtools::install_github(pkg['url'])
            suppressPackageStartupMessages( library(pkg['name'],character.only=TRUE))
        }
    

    【讨论】:

    • 您正在重塑包管理。这可能会以眼泪告终。
    • @Dirk,我同意第一个块是重新发明包管理,但后者允许灵活地加载本地存储库c:\myPackage,这对于不在服务上的私有包很有用像 Github。 PS。 drat 看起来很酷。我肯定会检查那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2011-08-08
    • 2019-03-07
    • 2015-07-24
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多