rocker-org / rocker-versioned

Run current & prior versions of R using docker
https://hub.docker.com/r/rocker/r-ver
GNU General Public License v2.0
297 stars 169 forks source link

How to install arrow in a rocker image #163

Closed tschm closed 5 years ago

tschm commented 5 years ago

Fantastic product. I wonder what's the most elegant way to install arrow within a rocker image. I find https://github.com/apache/arrow/blob/master/r/README.md somewhat terse for people without a professional sys-admin background :-) Your help is very appreciated...

eddelbuettel commented 5 years ago

Exactly how it is said on the installation instructions for arrow (following either the Debian or the Ubuntu directions as we have containers for both). You need the underlying C++-level libraries for their apt repos, and once present, arrow installed with an actual functioning core rather just an outer shell.

I think we can close this as it is not really a Rocker question, but more 'how do I use a complicated package on Linux' question.

tschm commented 5 years ago

Thank you for your quick reply. I have managed to install arrow in a Rocker image. Didn't succeed with plasma yet but I was only after parquet. Here's a Dockerfile based on rocker...

FROM rocker/rstudio:3.6.1

# see https://arrow.apache.org/install/
# rocker/rstudio is based on debian
RUN apt update && \
    apt install -y -V apt-transport-https curl gnupg lsb-release apt-utils locate

RUN echo "deb http://deb.debian.org/debian $(lsb_release --codename --short)-backports main" >> /etc/apt/sources.list.d/backports.list && \
    curl --output /usr/share/keyrings/apache-arrow-keyring.gpg https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-keyring.gpg && \
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main" >> /etc/apt/sources.list.d/apache-arrow.list && \
    echo "deb-src [signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main" >> /etc/apt/sources.list.d/apache-arrow.list && \
    curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \
    echo "deb http://apt.llvm.org/$(lsb_release --codename --short)/ llvm-toolchain-$(lsb_release --codename --short)-7 main" >> /etc/apt/sources.list.d/llvm.list && \
    echo "deb-src http://apt.llvm.org/$(lsb_release --codename --short)/ llvm-toolchain-$(lsb_release --codename --short)-7 main" >> /etc/apt/sources.list.d/llvm.list

RUN apt update && \
    apt install -y -V -f \
    libarrow-dev \
    libarrow-glib-dev \
    libarrow-flight-dev \
    libparquet-dev \
    libparquet-glib-dev \
    libxml2-dev

# this doesn't quite work yet
# RUN apt install -y -V -f \
#    #libarrow-cuda-dev \
#    libplasma-dev \
#    libplasma-glib-dev \
#    libgandiva-dev \
#    libgandiva-glib-dev

RUN install2.r --error \
    --deps TRUE \
    arrow
eddelbuettel commented 5 years ago

Sounds good. You will have to talk to the Arrow folks about your plasma issues.

I'll close this as we don't have a Rocker issue here.