古いバージョンのR(2系)の環境を作る

仕事の都合でRの2.15を使いたい状況になったのだが、 古いバージョンのRの環境を作るのが想像以上に大変だったので、環境構築の仕方を残しておく。

自分のMac上に環境を作ろうとしたのだが、Apple周りのエラーが大量に出現しだいぶ厳しそうだったので諦めた。 ※ちなみにWindowsだと比較的古いRでも環境を作りやすいとのこと。

私の作った環境は CentOS(6) + R(2.15.2) + R studio server

最終的にはDocker上にその環境をつくってlocalhostにlocal port forwardingして、開発をすることにした。

※R 3.0.0以上ならrockerっていうRのimageがあって即RStudio Server建てられるよ!!

RをCentOSにInstallする

Rのsourceはhttps://cran.r-project.org/src/base/のR-0 ~ R-3から入手できる。ビルド済みのものが動けばそれが一番簡単なのだけど、 難しそうだったのでsourceからビルドする。 今回は2.15.2を入れる想定でかいていく

# Rのビルドに必要なライブラリのinstall
yum install -y gcc-gfortran libgfortran gcc-c++ make cmake perl readline-devel 
yum install -y xorg-x11-server-devel libX11-devel libXt-devel

# RのsourceをDonwload
# ほかのバージョンを入れたいときは上記リンクからurlを探す
cd
curl -O https://cran.r-project.org/src/base/R-2/R-2.15.2.tar.gz
tar -zxvf R-2.15.2.tar.gz
cd R-2.15.2

./configure --prefix=/opt/R/2.15.2 --enable-R-shlib
make -j 4 # -j 4は並列してmakeしたいだけなのでなくても
make install 
ln -sF /opt/R /usr/local/lib64/R
ln -sF /usr/local/lib64/R/2.15.2/bin/R /usr/local/bin

これで RコマンドがうごけばOK

RStudio Serverをインストールする

Rだけ入れても多分大抵の人には使うのが難しいのでRStudio Serverをたてる。サーバをたてると、Web上からRstudioを使えるようになる。

https://www.rstudio.com/products/rstudio/download-server/

ここにあるようRStudio Serverでは3.0.0以上しか動かないので、 以下から欲しいバージョンのRStudio Serverを確認する。

https://support.rstudio.com/hc/en-us/articles/206569407-Older-Versions-of-RStudio

2.11.1以上なら、以下のver0.99で問題なく動く。

# Install Rstudio server
cd
curl -O https://download2.rstudio.org/rstudio-server-rhel-0.99.903-x86_64.rpm
yum install -y rstudio-server-rhel-0.99.903-x86_64.rpm

rpm -ihv http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

# 日本語対応
yum -y groupinstall "Japanese Support"
yum install -y initscripts 

# Start Rstudio server
rstudio-server start

Dockerで環境を作る場合

docker-composeファイルを作ったので使いたい方は以下からDL https://github.com/cocodrips/enviroment-old-version-r

Dockerfileの{password}の部分のみ書き換える

docker-compose build
docker-compose up

でサーバーが立ち上がるので、 http://localhost:8787 へアクセスするとログイン画面になる。

  • Username: rstudio
  • Password: 自分で設定した{password}

でログインすればRstudioが使える!やったー!

Dockerfileとdocker-compose

Githubに上がってるけどここにもはっておく

Dockerfile:

FROM centos
RUN yum install -y gcc-gfortran libgfortran gcc-c++ make cmake perl readline-devel 
RUN yum install -y xorg-x11-server-devel libX11-devel libXt-devel

# Install 2.15.2
# Other version: https://cran.r-project.org/src/base/R-2/
RUN cd; curl -O https://cran.r-project.org/src/base/R-2/R-2.15.2.tar.gz
RUN cd; tar -zxvf R-2.15.2.tar.gz
RUN cd ~/R-2.15.2; ./configure --prefix=/opt/R/2.15.2 --enable-R-shlib
RUN cd ~/R-2.15.2; make -j 4 # -j 4は並列してmakeしたいだけなのでなくても
RUN cd ~/R-2.15.2; make install

# [2.11.0 or higher] Use this script.
# [2.11.0 or lower] check document: https://support.rstudio.com/hc/en-us/articles/200552306-Getting-Started
RUN cd; curl -O https://download2.rstudio.org/rstudio-server-rhel-0.99.903-x86_64.rpm
RUN cd; yum install -y rstudio-server-rhel-0.99.903-x86_64.rpm 
RUN rpm -ihv http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
RUN yum -y groupinstall "Japanese Support"
RUN yum install -y initscripts 
RUN ln -sF /opt/R /usr/local/lib64/R
RUN ln -sF /usr/local/lib64/R/2.15.2/bin/R /usr/local/bin
RUN adduser rstudio
RUN echo "rstudio:{password}" | chpasswd

WORKDIR /r
ADD . /r/

docker-compose.yml

version: '3'
services:
  server:
    build: . 
    working_dir: /r
    ports:
      - 8787:8787
    volumes:
      - .:/r
    command: bash -c "rstudio-server start && /bin/bash"
    tty: true

さいごに

多分殆どのRユーザにとって古いRを使いたいことってほとんどないと思うから、誰も幸せになれない記事を書いてしまった・・・ Docker初心者なので冗長だったり無駄なこと書いてる可能性が高い(´・ω・`)