【问题标题】:Package dependencies when installing from source in R在 R 中从源代码安装时的包依赖项
【发布时间】:2011-08-13 21:15:58
【问题描述】:

只是确认:如果我将我的 R 包分发为 ZIP/TAR,那么安装包将不会自动下载/安装依赖项,因为我必须在 install.packages() 中设置 repos = NULL 并且如果 repos = NULL 不使用依赖项参数?可能让它工作的方法是打包一个安装脚本。那可能吗?我是否在这里完全遗漏了一些东西,并且有一种从源代码安装并自动下载和安装依赖项的机制?

【问题讨论】:

    标签: r cran


    【解决方案1】:

    您可以创建自己的存储库并将repos 设置为查找包的位置的向量,它将从您自己的存储库开始,然后包含指向 CRAN 镜像的链接。这就是我所做的,而且效果很好,因为这样我就可以轻松地与其他人共享我的包,并从我碰巧在的任何计算机上更新它们。

    【讨论】:

    • 聪明!我自己的存储库是否可以受密码保护或以其他方式确保仅私人访问(对我的防火墙外的客户端)
    • 我真的不知道,对不起。我的是公开的。我知道 R 通过 http 获取包,所以如果您可以限制对已批准客户端的 Web 访问,那也应该限制对您的存储库的访问。
    • 感谢您的建议!由于安全问题,我将避免使用存储库方法。我的包裹与我的公司绑定。维护 IP 白名单的工作量太大。我将把这个问题留几天,看看是否有其他解决方案
    • 也许您可以制作一个非常基本的包,其中包含您需要的依赖项并将其公开。首先安装它,获取必要的依赖项,然后从文件中安装你的真实包。
    • 另一个聪明的解决方案!我得考虑一下。理想情况下,我可以有一个安装脚本,为每个包调用包安装函数(如果尚未安装),但我不知道 R 包是否支持安装脚本。不是基本的东西,但也可能不太难。
    【解决方案2】:

    devtools 包有一个函数install。如果在包含 R 包源代码的目录中使用,它将安装该包并从 CRAN 下载任何依赖项。

    【讨论】:

    • 由于已经编写了执行此操作的代码,如果 R 及其事实上的工具 (R CMD / Rstudio) 默认执行其中一些操作,那肯定会很好。
    【解决方案3】:

    你可以使用

      devtools::install_local(path)
    

    它可以自动下载所有依赖项。

    【讨论】:

      【解决方案4】:

      如果您有 Github 帐户 myname,请将您的 R 包推送到 repo mypackage。然后拨打devtools::install_github("myname/mypackage")。将下载并安装包 mypackage 以及 DESCRIPTION 文件中 Imports 下列出的所有依赖项。

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 2010-12-01
        相关资源
        最近更新 更多