首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apt安装不同版本的R

apt安装不同版本的R
EN

Stack Overflow用户
提问于 2022-03-15 21:47:59
回答 2查看 566关注 0票数 0

摘要

当我在R映像中安装R库并试图使用另一个预先构建的坞映像访问这些库时,我收到了以下消息:

代码语言:javascript
复制
library("dplyr")

警告信息: 软件包“dplyr”是在R版本4.1.2下构建的。

由于某些原因,我得到的R版本和我安装的R版本并不相同。有什么方法检查https://cran.r-project.org/bin/linux/ubuntu/focal-cran40/上的包裹吗?我要求的R版本4.0.4和安装版本4.1.2之间的差异是什么原因?

我试过的

在我的dockerfile中,我明确地定义了我的目标版本4.0.4。

RUN apt-get install -y r-base=4.0.4-1.2004.0 r-recommended=4.0.4-1.2004.0

当我验证我的R版本时,它确实显示了4.1.2:

Rscript -e 'R.Version()$version.string'

1 "R版本4.1.2 (2021-11-01)“

当我验证我的R安装时,它显示已经安装了4.0.4:

apt policy r-base

代码语言:javascript
复制
 r-base:  
  Installed: 4.0.4-1.2004.0  
  Candidate: 4.1.2-1.2004.0  
  Version table:  
     4.1.2-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.1.1-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.1.0-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.0.5-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
 *** 4.0.4-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
        100 /var/lib/dpkg/status  
     4.0.3-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.0.2-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.0.1-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     4.0.0-1.2004.0 500  
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages  
     3.6.3-2 500  
        500 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages  

复制步骤:

我从一个清晰的Ubuntu20.04图像开始。

docker run -it --entrypoint bash ubuntu:focal

我确定我是当前的,然后添加一些包。

代码语言:javascript
复制
apt-get update && apt-get upgrade -y
apt-get install -y --no-install-recommends software-properties-common dirmngr gdebi-core curl

tzdata在安装过程中需要一些信息(这可能是我怀疑的任何信息):

代码语言:javascript
复制
1
1

添加r项目重新部署的签名密钥并添加回购。$(lsb_release -cs)决定“焦点”。

代码语言:javascript
复制
curl https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc > /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc  
add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

检查可用的r基包版本:

apt policy r-base

代码语言:javascript
复制
r-base:
  Installed: (none)
  Candidate: 4.1.3-1.2004.0
  Version table:
     4.1.3-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.1.2-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.1.1-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.1.0-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.5-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.4-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.3-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.2-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.1-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     4.0.0-1.2004.0 500
        500 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages
     3.6.3-2 500
        500 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages

安装R:

apt-get install -y r-base=4.0.4-1.2004.0 r-recommended=4.0.4-1.2004.0

检查已安装的版本:Rscript -e 'R.Version()$version.string'

1 "R版本4.1.3 (2022-03-10)“

我遗漏了什么?有没有可能是r-rpoject回购有问题?

谢谢你的投入!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-16 17:05:22

正如德克Eddelbuettel所建议的,问题在于我如何安装软件包。

r-baser-recommended是包含更多包的元包。元包可以按版本请求,但不要将请求的版本向下传播到它们的子包。

这意味着,如果您想安装特定版本的R,二进制文件将包含在r-base-core中。r-recommended和推荐的R base包也是如此,它们可以通过apt安装到/usr/lib/R/库中。

要安装所需的特定版本的R,可以将以下内容写入Dockerfile

代码语言:javascript
复制
ARG R_INSTALL_VERSION="4.0.4-1.2004.0"
RUN apt-get install -y  \
  r-base-core=${R_INSTALL_VERSION} \
  r-base-html=${R_INSTALL_VERSION} \
  r-doc-html=${R_INSTALL_VERSION} \
  r-base-dev=${R_INSTALL_VERSION} 

注意,这里排除了r-recommended,因为15个base包中有11个存在上述依赖问题。

如果需要这些包,可以通过apt policy <package-name>列出包的可用版本,并选择与请求的R版本兼容的版本。

此包版本不对应于R版本:

代码语言:javascript
复制
ARG R_INSTALL_VERSION="4.0.4-1.2004.0"
RUN apt-get install -y  \
  r-base-core=${R_INSTALL_VERSION} \
  r-base-html=${R_INSTALL_VERSION} \
  r-doc-html=${R_INSTALL_VERSION} \
  r-base-dev=${R_INSTALL_VERSION} \
  r-cran-cluster=2.1.1-1.2004.0 \
  ...
票数 -1
EN

Stack Overflow用户

发布于 2022-03-15 22:10:44

根据我上面的评论,这似乎很困惑。

您可以使用“PPA中的二进制文件是在一个更最新的版本下构建的”:是的,这是一个特性。如果您不想要当前的dplyr (通过当前的r-cran-dplyr),那么就不要通过Michael添加PPA (您按照在自述中心步骤正确地做了这件事)。

断开,如果有,是,你似乎认为你指向那个PPA,以某种方式得到与任意选择的R版本相匹配的版本,这里是您的4.0.4。你不能,我们也不会说你可以。

我们通过其他Rutter的CRAN镜子提供的是

  • 用于各种操作系统的当前版本的R,即Michael ( 4.0.3 )现在可以从我的Debian二进制文件中获得
  • 对于LTS发行版,大约有5000个额外的CRAN二进制文件,但通常也是用大多数最新的R版本构建的--这就是为什么dplyr二进制文件最近表示它是在4.0.4下构建的。

总之,这不是一种时光机机制。

(为此,您可以查看RSPM构建,我有一个容器rocker/r-rspm:20.04可以使用RSPM,您可以尝试它们提供的日期索引支持。默认情况下,我不使用enable )。)

如果我误解了什么,请添加一个评论,并可能澄清以上。r-sig-debian列表也可用于更多后续工作。

编辑:根据评论中的讨论,我们现在更清楚了。OP只限制了一个包的集合,并期望apt会神奇地扩展。事情不是这样发生的。基于我所写的其他一些Dockerfile,我推荐一些类似于

代码语言:javascript
复制
    && apt-get install -t unstable -y --no-install-recommends \
            # ... some omitted ...
            r-base=${R_BASE_VERSION}-* \
            r-base-dev=${R_BASE_VERSION}-* \
            r-recommended=${R_BASE_VERSION}-* \
            # ... more lines omitted ...

这就是我在构建r-base容器时强制使用版本的方式。版本化的r-base-dev将引入版本化的r-base-core容器,您也可以显式地列出它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71489404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档