【发布时间】:2021-10-30 22:04:18
【问题描述】:
我在 lambda 上通过 docker 制作图像时遇到此错误。
** [ERROR] OSError: cannot load library '/usr/local/lib64/R/lib/libR.so': /usr/local/lib64/R/lib/libR.so: cannot open shared object file : 没有这样的文件或目录**
Docker 文件:
FROM public.ecr.aws/lts/ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y wget
RUN apt-get install -y software-properties-common
RUN apt-get install -y gcc gfortran build-essential
RUN apt-get update
RUN apt-get install -y libcurl4-openssl-dev
RUN apt-get install -y zlib1g zlib1g-dev libbz2-dev liblzma-dev libpcre++-dev libpango1.0-dev \
xorg-dev \
libreadline-dev
RUN wget -c https://cran.r-project.org/src/base/R-3/R-3.5.0.tar.gz && tar -xf R-3.5.0.tar.gz
RUN cd R-3.5.0 && ./configure --with-readline=no --with-x=no && make && make install
RUN R -e "install.packages('remotes', repos = 'http://cran.us.r-project.org')"
RUN R -e "require(remotes)"
RUN R -e "remotes::install_version('text2vec', version = '0.5.1', repos = 'http://cran.us.r-project.org')"
RUN export LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"
COPY requirements.txt ./
RUN apt-get update && apt-get install -y \
python3.8 \
python3-pip
RUN pip3 install -r requirements.txt
RUN pip3 install \
awslambdaric
RUN ln -s /usr/lib64/R/lib/* /usr/local/lib64/R/lib/
COPY lambda_function.py ./
ENTRYPOINT [ "/usr/bin/python3", "-m", "awslambdaric" ]
CMD ["lambda_function.lambda_handler"]
任何帮助将不胜感激!
【问题讨论】:
-
在构建 R 时添加标志
--enable-R-shlib,但也许“站在巨人的肩膀上”并使用 github.com/rocker-org/rocker-versioned2 会更好?这是用于在该项目中构建 R 的脚本github.com/rocker-org/rocker-versioned2/blob/master/scripts/… -
一般
no such file or directory表示用户没有访问权限。ls -la /usr/local/lib64/R/lib | more将显示可能从“/usr/lib64/R/lib”复制的权限,因为“/usr/local/lib64/R/lib”是上面的符号链接(RUN ln -s)。chown你的 '/usr/local/lib64/R/lib` 让你自己访问。为什么选择 R-3.5.0? -
@MartinMorgan 没用
-
我们提供了许多版本的基础容器作为摇杆/r-base,它们也是官方的 r-base 容器,所以你可以拉
r-base:3.5.0(虽然我没有像那样回去但我以其他方式使用它们)。这些使用具有正确设置的官方 Debian 二进制文件,包括共享库构建。 (而且我是二进制文件和这些容器的维护者。)
标签: r object aws-lambda