【问题标题】:Installing a specific version of R from an Apt repository从 Apt 存储库安装特定版本的 R
【发布时间】:2021-07-22 14:09:20
【问题描述】:

R 志愿者目前维护 R ~3.5 和 ~4.0 的 Ubuntu 软件包存储库。对于 Bionic Beaver,这些是:

我正在构建单独的 Singularity 容器,我需要在其中安装非常特定版本的 R;似乎在这些存储库中提供。具体来说,我希望构建包含 R 版本 3.6.1、4.0.3 和 4.1.0 的容器;每个版本一个容器。

我在容器构建脚本中这样做,首先添加适当的 Apt 源,然后使用固定版本运行安装。我注意到只有使用包存储库中列出的精确版本号才能运行它并且还包括同一版本的r-recommended。例如,对于 R 3.6.1:

apt install -y r-base=3.6.1-3bionic r-recommended=3.6.1-3bionic

这会在给定版本上正确安装 r-baser-recommended。但是,当我运行容器化的 R 时,R 实际上报告自己处于这些存储库提供的最新版本(分别为 3.6.3、4.1.0 和 4.1.0)。据推测,鉴于r-base 是正确的,这甚至可能表明它们处于损坏状态。

查看 Apt 的输出,很明显许多其他 r-* 软件包默认为最新版本,而不是我指定的版本。为了解决这个问题,我尝试在默认为最新版本的所有包上显式设置版本。例如,再次使用 R 3.6.1:

apt install -y r-base=3.6.1-3bionic \
               r-base-core=3.6.1-3bionic \
               r-base-dev=3.6.1-3bionic \
               r-base-html=3.6.1-3bionic \
               r-doc-html=3.6.1-3bionic \
               r-recommended=3.6.1-3bionic

但是,这拒绝工作,抱怨与它试图安装的其他包冲突(r-cran-* 包,IIRC)。

我不知道这是 Apt-thing、R-thing,还是与他们的存储库有关。有没有办法我可以从官方来源安装这些特定版本,而无需自己构建任何东西? (如果不是,他们将旧版本保留在存储库中的意义何在?)

【问题讨论】:

  • 可能值得一看r-base and r-recommended
  • 谢谢 :) 好的,所以 r-base 是一个包含 r-base-corer-recommends 等内容的元数据包。因此,如果我只是安装 r-base-core--no-install-recommends -- 或许还有固定到相同版本的文档 -- 那么它就可以工作了!
  • 并通过写下您的答案并接受它来完成良性循环,因为在确认它符合您的需求和期望后,已回答的问题会吸引更多有类似问题的搜索者。
  • 第一行是错误的:不是“R 项目”。这是 Michael Rutter 的一个纯粹的志愿者计划(主要是在我的帮助下通过底层 Debian 软件包)。
  • @DirkEddelbuettel 已编辑;对不起,我不知道。我错误地认为它托管在 r-project.org 下意味着该项目有一些官方参与。

标签: r ubuntu apt singularity-container


【解决方案1】:

感谢@Chris' tip-off,了解上述 R 包的结构很重要。

r-base 是一个元数据包,其中包括r-base-corer-recommendedr-recommended 是另一个元包,其中包括一套推荐的 R 包,在尝试固定到版本时会引入不兼容性。

只是将 R 二进制文件和文档固定到特定的 ${VERSION},这样就可以解决问题:

apt install -y --no-install-recommends \
  r-base-core=${VERSION} \
  r-base-html=${VERSION} \
  r-doc-html=${VERSION}

如果你想构建包,你还需要r-base-dev=${VERSION}

【讨论】:

  • 巧合的是,您可以从我维护的 Docker 摇杆 r-base 容器中逐字复制代码(这也是官方的 r-base 映像)。
猜你喜欢
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多