服务器上安装R-3.4.2

R是统计学中常用的分析和画图工具,Bio3D等轨迹处理软件需要预先安装R。然而在服务器集群上安装R-3.4.2时,会遇到软件缺失或版本过低等问题。故将科学网上的一篇博客里介绍的方法搬运至此,以作备忘。

首先,在configure之后遇到如下问题:

1
2
checking if bzip2 version >= 1.0.6... no
checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required

表明需要安装更高版本的bzip2,在google搜索,终于搜到一篇遇到同样问题的文章,并附带了解决方法,以下内容便是基于对该文章的总结得到的。

简单来说,就是从16年开始,R的新版本去除了一些原来包含在安装包里的包,并默认这些包已经安装在你的系统里,这时候,如果你用的是自己本地较新的linux/mac/windows版本,默认已经装好这些包,即使没有也能够很快安装或者更新这些包。但是,如果你是在服务器集群上,没有管理员权限,需要将这些包先安装在自己的目录下,然后才能调用,而关键的问题就是调用时的环境变量如何设置。

根据这篇博文给出的解决方法,首先新建个目录用来安装所有需要装的包(比如:/HOME/packages),然后将需要安装的软件包都装到这个目录下,并设置好环境变量(这个过程最关键),之后再configure/make/make install安装R-3.4.2就可以了,其中还有一些细节问题下面会提到。

安装R-3.4.2过程中需要安装的包主要有:bzip2、xz、pcre和curl,该博文还提到了zlib,不过可能我的服务器上zlib已经更新过了,安装过程中并没有报错。

下载和安装bzip2:

1
2
3
4
5
6
7
8
9
cd ~/src
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz

cd bzip2-1.0.6
make -f Makefile-libbz2_so
make clean
make
make install PREFIX=/HOME/packages

注意:这里下载完bzip2后,需要修改Makefile文件,在CFLAGS这个变量后面添加-fPIC,否则后面安装R的时候会报错。

安装xz包:

1
2
3
4
5
6
7
8
cd ~/src
wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz

cd xz-5.2.2
./configure --prefix=/HOME/packages
make -j4
make install

安装pcre包:

1
2
3
4
5
6
7
8
cd ~/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xzvf pcre-8.38.tar.gz

cd pcre-8.38
./configure --enable-utf8 --prefix=/HOME/packages
make -j4
make install

安装curl包:

1
2
3
4
5
6
7
8
cd ~/src
wget --no-check-certificate https://curl.haxx.se/download/curl-7.47.1.tar.gz
tar xzvf curl-7.47.1.tar.gz

cd curl-7.47.1
./configure --prefix=/HOME/packages
make -j4
make install

设置安装好的包的环境变量(!这步最重要):

1
2
3
4
export PATH=/HOME/packages/bin:$PATH
export LD_LIBRARY_PATH=/HOME/packages/lib:$LD_LIBRARY_PATH
export CFLAGS="-I/HOME/packages/include"
export LDFLAGS="-L/HOME/packages/lib"

前两个是安装R的make过程需要用到的,后两个是configure过程需要用到的。

最后就是安装R-3.4.2:

1
2
3
4
cd ~/src/R-3.4.2
./configure --prefix=/HOME/packages/R-3.4.2
make
make install

将R-3.4.2的路径添加到环境变量。