【问题标题】:How to create CRAN ready R package that has external dependency libxml2如何创建具有外部依赖项 libxml2 的 CRAN 就绪 R 包
【发布时间】:2017-01-26 21:26:27
【问题描述】:

我创建了一个 R 包,我想提交给 CRAN。它包含需要用纯 C 编译的代码,此代码依赖于 libxml2 库。

我目前的解决方案是让 Linux 和 Mac 用户安装 libxml2-dev 包,让他们编译和安装 R 源包。

对于 Windows,我创建了一个特殊的二进制 R 包,其中包含所需的二进制依赖项。在阅读 CRAN 指南时,我发现只能上传源包,并且它们可能不包含任何二进制文件。

在这些指南之后,我的问题是:

  1. Mac/Linux 是否可以让用户在安装 R 包之前安装 libxml2-dev 或者是否有替代解决方案?
  2. 对于无法直接为最终用户安装 libxml2 的 Windows,我应该怎么做?

【问题讨论】:

  • 这个世界上最多产的 R 编码器的包也有这种依赖性。为什么不直接复制他的所作所为? cran.r-project.org/web/packages/xml2/index.html
  • 感谢您的链接!我已经查看了该软件包,但我错过了检查 libxml2 是否包含在 Rtools 中或从此处下载它的工具/winlibs.R:github.com/rwinlib

标签: r cran r-package


【解决方案1】:

如上所述,您可以复制 xml2 包的作用:

  • 要在 Linux/MacOS 上运行,请复制文件 configure/src/Makevars.in。请注意,macOS 默认包含 libxml2 的副本,因此您可以像在 Linux 上一样安全地链接到 -lxml2

  • 对于 Windows,需要从 xml2 复制文件 src/Makevars.wintools/winlibs.R。这是一个简单的脚本,在 Windows 上构建 R 包时会自动下载并静态链接 libxml2 from rwinlib

这些构建脚本经过测试可以在(几乎)任何平台上运行。

【讨论】:

  • 感谢您的指点!使用这些文件(针对我的特定软件包稍作修改)我可以在 Linux 和 Windows 上轻松构建(尚未测试 Mac,但我认为它会工作)。向 CRAN 提交我的包裹又迈进了一大步。
猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2017-09-12
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多