[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