13

在我们的服务器上,R 2.12.1 按照http://cran.r-project.org/bin/linux/debian/上的说明安装,使用apt-get install等。

由于某些情况,旧的 lenny 机器尚未更新到新的稳定版 debian,而且看起来这不会很快发生。由于这里的一些研究依赖于最新版本的 VGAM,我们需要在 debian 上安装 R 2.14.0。但为了让旧代码继续运行,我们不能只删除 R 2.12.1(在此版本上安装 VGAM 0.8.4 会出错)。

所以我们需要安装 2 个 R 版本。从我的一点了解,如果我们只是使用apt-get upgrade旧版本将被新的取代。我一直在浏览大量文档,但我找不到这样做的最佳方式。

我现在唯一能想到的就是尝试从源代码构建最新的 R,但我的同事对这个想法并不十分热衷,并促使我首先寻找另一种解决方案。我错过了任何信息,或者有人愿意向我展示完成此任务的小技巧吗?如果从源代码构建是解决方案,我想听听任何陷阱或可能的问题。

4

4 回答 4

8

您可以使用适当的编译标志安装任何软件的不同版本。当您使用 --help 运行配置脚本时,您应该会看到一个查看安装根目录的选项。

看一眼

./configure --help
...
Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]

因此您可以将 R-2.14 安装到:

/usr/local/R/2.14

您可以将 R-2.12 安装到:

/usr/local/R/2.12

当您启动配置脚本时,请执行以下操作:

./configure --prefix=/usr/local/R/2.14

等等。

于 2011-12-01T15:22:12.803 回答
5

正如我在评论中提到的,这在理论上是可能的,就像某些包系列(Emacs、PostgreSQL、...)允许多个并发版本一样。

我现在不能提供这个,因为我们使用/usr/{share,lib}/R了哪些冲突。如果我要做到这一点/usr/{share,lib}/R-$version,然后dpkg-alternatives用来翻转到默认的首选,我们可能会这样做。问题是过渡。此功能由少数用户使用,使用它可能会为大多数用户引入错误,直到它稳定为止。另外,我没有空闲时间(但如果其他人想这样做,请这样做)。

同时,您可以

  1. 可能使用高级功能dpkg并解压到本地目录,而不是下面的默认目录/——所以/opt/R/oldversions/2.12.1应该是可能的。R 甚至可以运行,您需要$RHOME相应地重新定义。

  2. /usr/local如果你真的必须的话,只需构建本地变体

  3. 如果一个特定的 CRAN / 非 CRAN 包声称需要一个特定版本的 R,那么已经修复了该死的包!;-)

最后,这是一个主题,r-sig-debian例如 CRAN 维护者 Michael 和 Johannes 不会在此处阅读此主题。

于 2011-12-01T17:43:19.207 回答
3

我认为如果没有提供多个版本的 debian repo,那么如果不从源代码编译 R,就很难保持两个版本的 R 顺利运行。

我经常做的是在我的主目录中安装 R,因为我们的研究所没有给我们 root 权限。要在系统范围内安装 R 的源版本,您可以将其安装在单独的目录中(例如 /opt/R2.14)并使用:

./configure --prefix=/opt/R2.14/

最后一步是创建一个指向 R 二进制文件的符号链接:

ln -s /opt/R2.14/bin/R /usr/bin/R2.14

用户可以启动两个版本的 R(R 和 R2.14)。希望这可以帮助!

于 2011-12-01T15:29:12.103 回答
0

确实,从源代码构建 R 非常非常容易(即使我也能做到!),只要您知道首先运行以下命令:

apt-get build-dep r-base

否则您可能会从make. 感谢 Dirk 在过去发布了该宝石。我没有在手册、自述文件或常见问题解答中看到这一点。

然后,它只是:

./configure
make

我想这可能是您需要考虑的:R 使用静态还是动态系统库?与预打包的二进制 R 相比,自建的 R 是否可以链接到不同的库?(我不知道)。你投入多少取决于我猜你的 R 应用程序有多重要,以及哪些系统库对你来说很重要。

于 2011-12-01T16:35:35.090 回答