正確には、古いRを要求するツールをRごとコンテナ化した。複数バージョン管理の方法を他に教えていただいたので、そっちも試してみる。environment moduleで切り替えまでやってみる。
きっかけ
普段はR 3.4.4を使っているのだが、とあるツールを使うときにRのエラーがでた。R 3.1で動作確認してますよってドキュメントに書いてあったのでなんとかして共存させようと試みた。
Rocker
RockerというR使いのためのDockerを謳うイメージを利用した。Rockerのイメージ群にはr-baseからr-studioまでいろいろあるが、今回はr-verというimageを使ってみた。ここに様々なstable versionのRがいろいろ用意されている。 rocker-devで使えるバージョン一覧
実際に試してみた
今回試したのはvdjtoolsというツール。実際のdockerfileはこちら。大雑把なところだけ書く。
Rocker-verを呼び出す
一行目で宣言する。Rのバージョンもここで指定。
FROM rocker/r-ver:3.1
java 8をいれる。
地味にここでつまずいた。特に、r-verはdebian:jessieをデフォルトで使っているため、いつものubuntuと使用感が違ってハマってしまった。なんやかんや調べているとjessieでjavaを入れている人のdockerfileがあったので丸コピした。
RUN \
echo "===> add webupd8 repository..." && \
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 && \
apt-get update
RUN echo "===> install Java" && \
echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes oracle-java8-installer oracle-java8-set-default
RUN echo "===> clean up..." && \
rm -rf /var/cache/oracle-jdk8-installer && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
使い方
WORKDIRをdataにして、シームレスにaliasできるようにしてみた。bashで下を実行。
$ docker pull yyasumizu/vdjtools
$ alias vdjtools="docker run -v $PWD:/data yyasumizu/vdjtools vdjtools"
dockerのインストールは省略。
dockerを使わない共存方法
複数バージョンをインストールしておいて、environment modulesで切り替える。environment modulesはubuntu 17.10。
Rのインストール
異なるバージョンのRを入れるのはめんどくさそうだったが、楽にしてくれるツールを見つけた。install_R_source
$ git clone https://github.com/DominikMueller64/install_R_source.git
$ cd install_R_source
$ ./install_R_source 3.1.1
途中でエラーが出たので下の記事でfix。
stackoverflow : error: --with-readline=yes (default) and headers/libs are not available
$ /usr/bin/R-3.1.1
を実行して動いたらうまくいっている。
environment module
すみません、力尽きました。リクエストがあれば後日。頑張ってください。
感想
本当は、Annacondaのような便利型バージョン管理ツールを探していた。もっといいやり方があれば教えてください。
参考
R使いのためのDocker「Rocker」を使ってみる(Windows)
増え続ける Dockerfile 用の GitHub Repository をなんとかする
Installing multiple versions of R