针对特定Linux风格预编译R包

针对特定Linux风格预编译R包,r,package,precompile,R,Package,Precompile,我们已经为R包建立了一个简单的类似于CRAN的本地存储库。有许多用户,他们都使用相同版本的Linux 有没有一种方法可以说服R提供预编译的Linux包而不仅仅是源代码包?对于使用我们的存储库的任何人来说,编译步骤都需要相当长的时间。应该可以预编译和重用相同的二进制文件,因为我们可以保证Linux版本对所有用户都是一致的 这样的东西怎么能一起破解呢?从狭义上讲,“所有人都使用同一版本的Linux”,实际上你有一个选择(这恰好是相对鲜为人知的)。使用例如 正如R CMD INSTALL--help所

我们已经为R包建立了一个简单的类似于CRAN的本地存储库。有许多用户,他们都使用相同版本的Linux

有没有一种方法可以说服R提供预编译的Linux包而不仅仅是源代码包?对于使用我们的存储库的任何人来说,编译步骤都需要相当长的时间。应该可以预编译和重用相同的二进制文件,因为我们可以保证Linux版本对所有用户都是一致的


这样的东西怎么能一起破解呢?

从狭义上讲,“所有人都使用同一版本的Linux”,实际上你有一个选择(这恰好是相对鲜为人知的)。使用例如

正如
R CMD INSTALL--help
所说

--build           build binaries of the installed package(s)
这些包不是
.deb
.rpm
类似的包:没有添加依赖信息或类似信息。但它们完全符合您的要求:节省编译时间


不过,我不知道有哪种存储库结构可以用来构建。

您可能对此感兴趣,并以此为例,尽管它可能对您没有特别的帮助,因为您可能不会谈论基于Debian的发行版。你们都在运行什么发行版?(也就是说,“有没有办法说服R提供预编译的Linux包而不是源代码包?”的答案是“可能没有”,但“应该可以预编译并重用相同的二进制文件”的答案是“是”,而“如何才能一起破解这样的东西?”将根据您的发行版本而有所不同)目前@duckmayr CentOS 6,移动到CentOS 7。用户没有管理员权限,无法安装到自己的本地repo中,因此我认为Linux软件包不是一个好的解决方案。如果可能的话,我想依靠R的内置机制,所以安装我们的包就像从CRAN安装一样。这给了我一个想法-我可以编译包并将其转换为“源包”吗,“不需要编译”。那么所有的二进制部分就是“有效载荷”。。。理想情况下,我希望在repo中有一个单独的目录,以将预编译的源代码与真正的源代码分开,但在这一点上,我愿意进行黑客攻击,我怀疑您没有尝试我建议的内容:)。请这样做,它和你描述的差不多。我已经试过你的建议了。它为我创建了一个uu R_x86_64-pc-linux-gnu.tar.gz。。。。这很好。我要解决的问题是——如何将它上传到我们的存储库中,使它能够被索引并正常工作,明白我的意思吗?这就是我在上面写的:没有回购支持:-/因为没有元数据。但这将有助于在与您的系统“运行时相同”的系统上快速安装(版本化)软件包。也许最好把它当作一个缓存…我接受这个答案,因为它能满足我的需要。将尝试为此用例提交R的特性请求-应该不会太难!
--build           build binaries of the installed package(s)