为了使用SparkR,决定要在Spark所在的Linux上装上R,结果血泪篇了。主要原因是公司内部的虚机,无法连外网,所以网上很多的直接rpm或者yum的方法都没用,需要自己编译R的源码,中间因为Redhat Enterprise没有给装好gcc,又为了装gcc折腾了半天,终于现在通过了configure,可以make了,赶紧记录下来。
目前看这是第一篇完整的R的安装文章吧。随着spark 1.4之后SparkR的流行,估计会有不少人需要这个东西。而且企业内部的机器一般都不会让你连外网的,那么自己编译就是必须的了。
先是去R的官网,CRAN里面下一个R的源码包,R-3.3.2.tar.gz。然后解压缩到本机上
R的编译,文档写的很简单就是三个命令:
./configure
make
make install
可是configure是个大坑,第一个错是没找到gcc和c++编译器,只好先搞定gcc的安装,需要去找到RH EL6的iso包,把其中的Packages目录搞出来,传到虚机上。然后按照这个步骤安装。
1. rpm -ihv kernel-headers-2.6.32-279.el6.i686.rpm
2. rpm -ihv glibc-headers-2.12-1.80.el6.i686.rpm
3. rpm -ihv glibc-devel-2.12-1.80.el6.i686.rpm
4. rpm -ihv mpfr-2.4.1-6.el6.i686.rpm
5. rpm -ihv ppl-0.10.2-11.el6.i686.rpm
6. rpm -ihv cpp-4.4.6-4.el6.i686.rpm
7. rpm -ihv cloog-ppl-0.15.7-1.2.el6.i686.rpm
8. rpm -ihv gcc-4.4.6-4.el6.i686.rpm
注意这里用的都是32位的包,我自己安装是tab出的x86_64的rpm包,别搞错了。
rpm -ivh libgfortran-4.4.7-11.el6.x86_64.rpm
rpm -ivh gcc-gfortran-4.4.7-11.el6.x86_64.rpm
rpm -ivh libstdc++-devel-4.4.7-11.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.7-11.el6.x86_64.rpm
最后configure还是会报两个warning,一个是with-x=yes,一个是with-readline=yes。这两个是生产帮助文档的。不会用到。所以把这两个参数设定成no就ok了。
2016年1月26日更新:为了配合RStudio的安装,在configure的时候还要加上 --enable-R-shlib=yes 来产生 libR.so的包
./configure --with-x=no --with-readline=no --enable-R-shlib=yes
R的命令就在源码目录的bin目录下面。