【问题标题】:R X13binary missing in docker builddocker build 中缺少 R X13binary
【发布时间】:2019-08-23 11:42:12
【问题描述】:

我有一个 docker 文件,我正在尝试安装 R 季节性库:

FROM continuumio/miniconda3:4.5.12 # Debian

. . .

# Install packages not on conda
RUN conda activate r_env && \
    R -e "install.packages(c('RUnit', 'seasonal'), dependencies=TRUE, repos='https://cran.case.edu')"

一切看起来都安装正确,但是当我进入容器并运行 library(seasonal) 时,我得到了错误:

> library(seasonal)
The binaries provided by 'x13binary' do not work on this
machine. To get more information, run:
  x13binary::checkX13binary()

> x13binary::checkX13binary()
Error in x13binary::checkX13binary() : X-13 binary file not found

经过一番谷歌搜索后,我似乎可以手动设置二进制文件的路径,并且 findutil 显示该二进制文件存在于机器上:

(r_env) root@89c7265d9316:/# find / -name "*x13*"
/opt/conda/envs/arimaApiR/lib/R/library/x13binary
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/help/x13binary.rdx
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/help/x13binary.rdb
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/html/x13path.html
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/html/x13binary-package.html
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/bin/x13ashtml.exe
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/R/x13binary.rdx
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/R/x13binary.rdb
/opt/conda/envs/arimaApiR/lib/R/library/x13binary/R/x13binary
/opt/conda/envs/arimaApiR/conda-meta/r-x13binary-1.1.39_2-r36h6115d3f_0.json
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/help/x13binary.rdx
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/help/x13binary.rdb
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/html/x13path.html
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/html/x13binary-package.html
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/bin/x13ashtml.exe
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/R/x13binary.rdx
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/R/x13binary.rdb
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0/lib/R/library/x13binary/R/x13binary
/opt/conda/pkgs/r-x13binary-1.1.39_2-r36h6115d3f_0.tar.bz2

但是,无论我将路径设置为什么,库仍然会在实际路径所在的位置引发错误:

(r_env) root@89c7265d9316:/# export X13_PATH=/opt/conda/envs/arimaApiR/lib/R/library/x13binary
(r_env) root@89c7265d9316:/# R -e "library(seasonal)"

The system variable 'X13_PATH' has been manually set to:
  /opt/conda/envs/arimaApiR/lib/R/library/x13binary
Since version 1.2, 'seasonal' relies on the 'x13binary'
package and does not require 'X13_PATH' to be set anymore.
Only set 'X13_PATH' manually if you intend to use your own
binaries. See ?seasonal for details.
Binary executable file /opt/conda/envs/arimaApiR/lib/R/library/x13binary/x13as or /opt/conda/envs/arimaApiR/lib/R/library/x13binary/x13ashtml not found.
See ?seasonal for details.

我觉得我在兜圈子。有没有人幸运地在容器中运行它?

【问题讨论】:

    标签: r docker conda


    【解决方案1】:

    我已经准备好自己的容器,但我没有使用 continuumio/miniconda,因为我不知道它在里面是如何工作的。

    这是我准备的 Dockerfile:

    FROM r-base:3.6.1
    
    RUN apt-get update \
        && apt-get install -y libxml2-dev
    
    RUN R -e "install.packages('RUnit', dependencies=TRUE, repos='https://cran.case.edu')"
    RUN R -e "install.packages('x13binary', dependencies=TRUE, repos='https://cran.case.edu')"
    RUN R -e "install.packages('seasonal', dependencies=TRUE, repos='https://cran.case.edu')"
    
    CMD [ "bash" ]
    

    如果我运行你的测试命令,我会收到:

    > library(seasonal)
    > x13binary::
    x13binary::checkX13binary     x13binary::supportedPlatform  x13binary::x13path            
    > x13binary::checkX13binary
    x13binary::checkX13binary
    > x13binary::checkX13binary()
    x13binary is working properly
    > 
    

    注意:Dockerfile 可以改进,例如你可以把包放在一起c(RUnit, x13binary, seasonal),你可以在安装包后删除apt缓存,但我只是想运行一个测试看看它是否可以工作。

    【讨论】:

    • 呸,谢谢!看起来问题出在 conda 上,而不是 docker 上。我已经运行了conda install -c r r-x13binary,但是通过 cran 安装它可以修复它。
    • 您是否尝试在 Dockerfile 中添加 RUN R -e "install.packages('x13binary', dependencies=TRUE, repos='https://cran.case.edu')"?您的 R 似乎在抱怨我们您试图直接使用二进制文件。
    • 对不起,我上次的评论不清楚,是的,我刚刚删除了 x13 的 conda install 并使用 R 通过 cran 安装它。
    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2020-04-03
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多