[R-sig-Debian] Trying to install r-stan without using rocker
Jesse McMullen-Crummey
je@@e @end|ng |rom voxpop|@b@@com
Mon Jun 13 20:25:35 CEST 2022
Hi All,
I’ve followed Dirk’s advice and am now starting from:
FROM eddelbuettel/r2u:22.04
While installing rstan using
RUN Rscript -e 'install.packages(c("rstan", "stringr", "gtools", "tidyr"))'
I can now get my lambda function running, but it throws an error when opening my Stan model, namely:
"C++ compiler not found on system.”
I would have thought that it would be part of this base image.
Any thoughts would be appreciated.
Jesse
un 13, 2022, at 12:36 PM, Dirk Eddelbuettel <edd using debian.org> wrote:
>
>
> Jesse,
>
> On 13 June 2022 at 12:19, Jesse McMullen-Crummey wrote:
> | Hi All,
> |
> | I found your mailing list via a stack overflow mention. I’m currently on my second full day of trying to build a docker container to use as an AWS lambda fcn and am feeling pretty stuck - I was hoping someone here could help. It needs to support python+R+rstan.
>
> If something does not work, I usually backtrack.
>
> You start from python:3.8-slim-bullseye. That is your right. But this is a
> Debian-and-R mailing list, so we may not have started from there.
>
> I maintain and curate several sets of Rocker containers building either on
> - plain Debian as our rocker/r-base which is also the official r-base
> - Ubuntu because I can then use Ubuntu binaries as from c2d4u or now also r2u
>
> If I were, I'd the same. With either base set you should get to 'apt install r-cran-rstan'
> easily, and adding your other package is easy. (If you look at work I worked
> on recently via its site https://eddelbuettel.github.io/r2u/ you will see
> that staring from eg eddelbuettel/r2u:22.04 you can run a single
> Rscript -e 'install.packages(c("rstan", "stringr", "gtools", "tidyr"))'
> without issues giving your the R side to which you can then add your Python
> requirements. I usually try that first interactively in the same Docker
> container.
>
> If all that fails, maybe you want to emphasize Python first and use Anaconda
> via mamba. Some folks had good luck with that (but don't mix and match, only
> tears result from that). We cannot help with *conda here.
>
> Dirk
>
>
> | I currently construct the docker image from a python/debian base image. I can get R working fine, but when I try to run an r-stan script within the lambda function I get a ’there is no package called Stan”, despite a good 5 minutes of the image build being dedicated to the download of rstan. Am looking for advice here on how to proceed. My current dockerfile follows…
> |
> | ################
> | FROM python:3.8-slim-bullseye
> |
> | ENV DEBIAN_FRONTEND=noninteractive
> |
> | ENV LC_ALL=C.UTF-8
> | ENV LANG=en_US.UTF-8
> | ENV TZ=:/etc/localtime
> | ENV PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin
> | ENV LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib
> | ENV LAMBDA_TASK_ROOT=/var/task
> | ENV LAMBDA_RUNTIME_DIR=/var/runtime
> |
> | # Define custom function directory
> | ARG FUNCTION_DIR="/var/task"
> | WORKDIR ${FUNCTION_DIR}
> |
> | # Install aws-lambda-cpp build dependencies + r
> | RUN apt-get update && \
> | apt-get install -y \
> | g++ \
> | make \
> | cmake \
> | unzip \
> | libcurl4-openssl-dev \
> | r-base
> |
> | COPY requirements.txt .
> | COPY irt_dim_red.R .
> | COPY . .
> |
> | #install the python requirements
> | RUN pip install -r requirements.txt
> |
> | COPY scripts/install_stan.R install_stan.R
> |
> | RUN Rscript "install_stan.R"
> | RUN R -e "install.packages('stringr')"
> | RUN R -e "install.packages('gtools')"
> | RUN R -e "install.packages('tidyr')"
> |
> | # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
> | ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
> | CMD [ "main.handler"]
> | Where the script install_rstan.R is:
> |
> | # Following instructions from
> | # https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux
> |
> | print("Running install_stan.R")
> |
> | ## Creating /home/rstudio/.R/Makevars
> |
> | dotR <- file.path(Sys.getenv("HOME"), ".R")
> | if (!file.exists(dotR)) dir.create(dotR)
> | M <- file.path(dotR, "Makevars")
> | if (!file.exists(M)) file.create(M)
> | cat("\nCXX14FLAGS=-O3 -march=native -mtune=native -fPIC",
> | "CXX14=clang++",
> | file = M, sep = "\n", append = TRUE)
> |
> | ## Installing rstan
> |
> | install.packages("rstan", dependencies=TRUE, type = "source")
> |
> | Any help would be massively appreciated.
> |
> | Jesse
> |
> |
> | —
> |
> |
> | Jesse McMullen-Crummey, PhD (he/him)
> | Data Engineer
> |
> |
> | [[alternative HTML version deleted]]
> |
> | _______________________________________________
> | R-SIG-Debian mailing list
> | R-SIG-Debian using r-project.org
> | https://stat.ethz.ch/mailman/listinfo/r-sig-debian
>
> --
> dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
[[alternative HTML version deleted]]
More information about the R-SIG-Debian
mailing list