Muji Blog

いろんなトピックを備忘録的に発信していきます。トピック例:{画像処理、信号処理、心理学}

M1チップ macにrとpythonのdocker環境を構築する

M1チップのMacBookProを購入したので,ぼちぼち解析環境を構築しています。
その中で,WSLでは通った設定がMBPでは通らなかったので記録します。
なぐり書きなので,また修正入ると思います。

Dockerfile (2021.02.19現在)

FROM ubuntu:20.04

# set timezone
RUN apt-get update \
    && apt-get install tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN date

# install packages
RUN ["/bin/bash", "-c", "\
    apt-get update \
    && apt-get install -y \
    vim curl libcurl4-openssl-dev libxml2-dev\
    build-essential \
    git curl llvm sqlite3 libssl-dev libbz2-dev \
    libreadline-dev libsqlite3-dev libncurses5-dev \
    libncursesw5-dev python-tk python3-tk tk-dev aria2 \
    lsb-release locales \
    libv8-dev  gdebi-core \
    gnupg ca-certificates \
    "]

#language
RUN locale-gen ja_JP.UTF-8  
ENV LANG ja_JP.UTF-8  
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

RUN ["/bin/bash", "-c", "apt-get install -y software-properties-common"]
RUN ["/bin/bash", "-c", "apt-get install -y ansible"]
# install r
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
#RUN add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
RUN add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'

RUN ["/bin/bash", "-c", "\
    apt-get update && apt-get upgrade -y \
    && apt-get install -y r-base \
    "]
#RUN Rscript --version
CMD ["/bin/bash", "-c"]

問題は以下の部分

#RUN add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
RUN add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'

本当はRの4.0を入れたかったのだが,MBPだと入らず,下記のページと同じエラーを吐く。
stackoverflow.com

問題のr-base-coreは,上記のようにレポジトリを追加しても3.6.2版が入ってしまい,R4.0の依存環境を満たせない。
そこでインストールするRのバージョンを3.6して実行すると問題なく環境を構築できた。

原因は不明。
しばらくは3.6で進めるとしようかな。

追記

結局原因はわからず,r-baseイメージをベースに以下のDockerfileでコンテナを作成することでR4.0を使うことはできました。

FROM r-base:latest

# set timezone
RUN apt-get update \
    && apt-get install tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN date

# install packages
RUN ["/bin/bash", "-c", "\
    apt-get update \
    && apt-get install -y --allow-downgrades \
    libcurl4=7.74.0-1 \
    vim curl libcurl4-openssl-dev libxml2-dev\
    build-essential \
    git llvm sqlite3 libssl-dev libbz2-dev \
    libreadline-dev libsqlite3-dev libncurses5-dev \
    libncursesw5-dev python-tk python3-tk tk-dev aria2 \
    lsb-release locales libffi-dev libxml2-dev \
    libv8-dev \
    "]

# language
RUN locale-gen ja_JP.UTF-8  
ENV LANG ja_JP.UTF-8  
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

# LINE and COLUMNS
ARG cols=$(tput cols)
ARG lines=$(tput lines)
ENV COLUMNS=$cols
ENV LINES=$lines

RUN ["/bin/bash", "-c", "apt-get install -y software-properties-common"]
RUN apt-add-repository ppa:ansible/ansible -y

RUN ["/bin/bash", "-c", "Rscript --version"]
RUN ["/bin/bash", "-c", "localedef -f UTF-8 -i ja_JP ja_JP"]
CMD ["/bin/bash", "-c"]