如何创建具有外部依赖性 libxml2 的 CRAN 就绪 R 包
How to create CRAN ready R package that has external dependency libxml2
我已经创建了一个 R 包,我想提交给 CRAN。它包含需要用纯 C 编译的代码,并且此代码依赖于 libxml2
库。
我目前的解决方案是让Linux和Mac用户安装libxml2-dev
包,这样他们就可以编译安装R源码包了。
对于 Windows,我创建了一个特殊的二进制 R 包,其中包含所需的二进制依赖项。在阅读 CRAN 指南时,我看到只能上传源包,并且它们可能不包含任何二进制文件。
在这些指南之后,我的问题是:
- Mac/Linux 让用户在安装 R 包之前安装 libxml2-dev 是否可以,或者是否有其他解决方案?
- 对于无法直接为最终用户安装 libxml2 的 Windows,我应该怎么做?
如上所述,您只需复制 xml2 包的功能即可:
要在 Linux/MacOS 上运行,请复制文件 configure
和 /src/Makevars.in
。请注意,macOS 默认包含 libxml2 的副本,因此您可以像在 Linux.
上一样安全地 link 到 -lxml2
对于 Windows 需要从 xml2 复制文件 src/Makevars.win
和 tools/winlibs.R
。这是一个简单的脚本,在 Windows.
上构建 R 包时自动下载和静态 links libxml2 from rwinlib
这些构建脚本已经过测试,可以在(几乎)任何平台上运行。
我已经创建了一个 R 包,我想提交给 CRAN。它包含需要用纯 C 编译的代码,并且此代码依赖于 libxml2
库。
我目前的解决方案是让Linux和Mac用户安装libxml2-dev
包,这样他们就可以编译安装R源码包了。
对于 Windows,我创建了一个特殊的二进制 R 包,其中包含所需的二进制依赖项。在阅读 CRAN 指南时,我看到只能上传源包,并且它们可能不包含任何二进制文件。
在这些指南之后,我的问题是:
- Mac/Linux 让用户在安装 R 包之前安装 libxml2-dev 是否可以,或者是否有其他解决方案?
- 对于无法直接为最终用户安装 libxml2 的 Windows,我应该怎么做?
如上所述,您只需复制 xml2 包的功能即可:
要在 Linux/MacOS 上运行,请复制文件
configure
和/src/Makevars.in
。请注意,macOS 默认包含 libxml2 的副本,因此您可以像在 Linux. 上一样安全地 link 到 对于 Windows 需要从 xml2 复制文件
src/Makevars.win
和tools/winlibs.R
。这是一个简单的脚本,在 Windows. 上构建 R 包时自动下载和静态 links libxml2 from rwinlib
-lxml2
这些构建脚本已经过测试,可以在(几乎)任何平台上运行。