我正在准备一个包含第三方编译可执行文件的R包.计划是使用system()调用将其与R连接.我有权分发这个可执行文件,但不是它的源代码.不幸的是,它仅在Windows 32位下编译,并且不可能在不同的体系结构下轻松地重新编译它.
了解此程序包的受众有限,应如何分发可执行文件?我也认识到,由于这个原因,CRAN不允许这样做.
例如,应该将可执行文件包含在软件包安装的/ bin /子文件夹中,或者应该在软件包本身安装时以某种方式下载可执行文件.
此外,如果在这种情况下我面临什么许可问题?
我已经开发了两个类似这样的软件包,这两个软件包都托管在R-forge上,因为CRAN二进制限制(顺便说一下,这对我来说似乎是非常明智的).(我不认为你错过任何明显的问题 - 只是在这里说我选择做什么.)
cpcbp包(共同的主组件/背投影)利用来自通过帕特里克·菲利普斯编写的代码编译的二进制; 源代码是不可分发的,因为它使用了一些Numerical Recipes例程.我一直想在R中重写这个核心(它只是简单的数值线性代数,它不会那么难).在我看来,我可能不得不修改这个版本的许可证 - 我可能会说"GPL",但我不认为我可以实际做到这一点,因为不可分发的组件......glmmADMB软件包使用可自由再分发的源代码(BSD许可证),但工具链非常复杂,我不希望用户必须下载整个支持包在这两种情况下,我都将二进制文件放在inst/bin特定于体系结构的子目录(可以安装在其中/bin)中,并使用适当的逻辑来检测体系结构并运行正确的二进制文件.
我想原则上你可以通过将不可再发行的部分变成下载(如你所知)来解决无法通过GPL许可的问题,但这似乎违反了精神......