为可以安装在不同机器上的 Linux 创建 R 二进制包?

Posted

技术标签:

【中文标题】为可以安装在不同机器上的 Linux 创建 R 二进制包?【英文标题】:Create R binary packages for Linux that can be installed on different machines? 【发布时间】:2012-08-05 23:15:17 【问题描述】:

我很确定这是不可能的,因为如果是这样,那么 CRAN 将拥有 R Linux 二进制包。为什么不可能?我们可以创建 R 包的 Mac 和 Windows 二进制版本,这些 tgz/zip 文件可以安装在不同的系统上。为什么我们不能对 Linux 做同样的事情?

我猜是因为有很多不同的发行版,而且每个发行版都不一样。是否可以为 Debian/Ubuntu 和 RHEL/CentOS 创建二进制文件?

如果可能,我们该怎么做?谢谢。

【问题讨论】:

CRAN homepage 上有一个Download R for Linux 链接...这不是您要找的吗? 我认为他们在问为什么在 Linux 上所有软件包都是从源代码安装的,而不是提供某种可用的二进制文件。 @Dason:但二进制文件可用的。注意所有r-cran.*.deb 文件here。但是,对于每种风格的 linux,并不是每个软件包都有二进制文件,因为这需要大量维护。 @JoshuaUlrich:在将近 4000 个可能的包中,这些最多是 200 个。如果您必须指向某个地方,请在 Launchpad 上使用 Michael 的 PPA 来获取“cran2deb4ubuntu”,或者使用 Don 的 debian-r.debian.net,它应该包含几乎所有的软件包。然而,OP 询问了 cross-distro 二进制文件,当我试图回答时,这将涉及魔法。 【参考方案1】:

不同的编译器版本、不同的 libc/libstc++ 版本、不同的“其他库”版本、不同的发行版发行周期……使您无法将目标与动态链接相匹配。

您可以到达一半,例如RStudio 通过 a) 捆绑所有依赖项和 b) 反映子集,就像它们对 Debian/Ubuntu 和 RH/FC/CentOS 所做的那样。但是使用 a) 压缩包会变得很大,就像使用静态链接一样。

简而言之:你不能在 Linux 上。所以回到源头。

【讨论】:

因此有适用于 Mac 和 Windows 的二进制包,因为 R 内核使用单个编译器在每个平台(Xcode 和 MinGW)上构建 R,因此包的构建方式相同,因此可以传输从机器到机器?谢谢德克。 @Dirk 我们正在使用 Docker 来部署使用 Rocker/shiny (debian:testing) 的 Shiny 应用程序。由于包编译,构建时间很长。鉴于目标 Linux 系统总是相同的,有没有办法为我们的特定 Linux 版本创建我们自己的带有预编译包的 CRAN 镜像。或者是否有类似的解决方案可以实现相同的目标?谢谢! 是的,你可以。曾经有一个服务(谷歌“cran2deb”),我们正在尝试重建一个。不过,它不会“很快”准备好。但是你可以在本地代理它。 @DirkEddelbuettel 有没有地方可以跟踪您上面提到的工作的进展情况?

以上是关于为可以安装在不同机器上的 Linux 创建 R 二进制包?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下MongoDB安装和配置详解

linux同一台机器安装两台nginx

win10 (HDD) + Ubuntu (SSD) 不同硬盘双系统安装 (针对 BIOS 模式为 UEFI 的机器)

NFS, linux系统间文件共享

NFS, linux系统间文件共享

R 到 R 通信