RedHat下离线安装R与Rserve

0前言

  最近学习了有关R语言的内容,并在虚拟机中安装了RedHat6.5系统,通过部署在RedHat系统的R来实现有关R的计算,因为客户要求离线安装相应的R程序,因此需要事先准备好安装包。调用R的语言为Java,下篇为介绍如何使用Java调用。

1系统信息

  下面的安装截图为win7 64位虚拟机VMWare中的RedHat 6.5安装过程,且使用的是非root用户,用户名007。

  使用的RedHat6.5版本信息如下,如果查找gcc得到的内容与下面的图不一致,比如没有gcc-gfortran等,请忽略:
RedHat系统信息

2安装包准备

  这里准备的安装包主要包括R安装、Rserve安装包以及可能用到的依赖包,依赖包主要是与gcc编译器相关,在安装的过程中如果提示缺少相应的依赖包,可以根据缺少的内容进行安装,然后再进行R和Rserve的安装。R和Rserve安装包(tar.gz文件)都可以从官网直接下载,依赖包(.rpm文件)我是从RedHat系统盘的Packages文件夹中直接提取的,此外JDK也是从官网下载的,可以。安装准备包如下图所示:
安装包

  受上传权限限制,只好做了两个下载包供大家下载,分别是:

3RedHat安装JDK过程

  RedHat系统自带的有Java环境,不建议使用,尤其是OpenJDK的内容,建议将其卸载后使用自己安装的JDK,我这里使用了官网下载的JDK1.6版本。

3.1 检查系统自带JAVA环境

  打开一个终端窗口,输入下面的命令查看是否安装了java,跟windows查看的一样,如下:

java -version

  如果返回的信息中显示版本号的话,证明存在java环境,需要进行卸载。

3.2卸载系统自带JAVA

  查看自带的java环境,一般是通过java关键字进行搜索来查看安装的有哪些,以便进行下面的卸载。输入命令:

rpm -qa|grep java

  得到的结果如下(因系统不同,结果有所不同):

# java-1.4.2-gcj-compat-1.4.2.0-40jpp.112 
# java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 

  需要卸载上面的自带java,使用下面的命令:

rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.112 
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

  卸载完毕后,再使用java -version命令检测有没有java环境,如果有的话请使用jdk和gcj关键字重复3.1-3.2步骤查找和删除,确保java环境清理干净。

3.3安装JDK

  1. 拷贝文件
      安装从官网下载的jdk1.6文件,我下载的是jdk-6u45-linux-x64.bin文件,需要将该文件拷贝到一个目录下,这里使用的是/home/007/Java目录,后面配置时需要使用该目录,当然你也可以自己选择一个其他的目录。
  2. 执行安装
       进入到/home/007/Java目录下执行安装命令,命令如下,等待执行完毕即可:
    [007@localhost Java]$ ./jdk-6u45-linux-x64.bin

3.4配置环境变量

  安装完jdk之后需要为用户配置环境变量,linux下的环境变量配置有三种:
   a. 所有用户都可以使用的环境变量,下次登录还可以用;
   b. 当前用户可以使用使用的环境变量,下次登录还可以用;
   c. 临时环境变量,退出登录后不再有效。

  这里使用的第二种环境变量,为007用户配置环境变量,且下次登录后还以正常使用,第一种需要root权限,权限太高,还是不使用为好;第三种相信没有几个人会在真正的系统应用中使用吧。

  配置当前用户环境变量需要修改.bash_profile文件,该文件位于~目录下,一定要在进入~目录后执行修改命令,否则会无效的,执行下面的命令:

[007@localhost Java]$ cd ~
[007@localhost ~]$ vi .bash_profile

  通过vi编辑器编辑该文件,如果不知道vi编辑器如何使用的话,自己找下资料吧,这里就不详细介绍了,这里只告诉你输入完命令后,摁一下字母i进入插入模式,然后上下移动光标定位到要输入的位置,然后将你看到的内容修改为下面的内容:

# .bash_profile  

# Get the aliases and functions  
if [ -f ~/.bashrc ]; then  
       . ~/.bashrc  
fi  

# User specific environment and startup programs  
JAVA_HOME=/home/007/Java/jdk1.6.0_45  
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
PATH=$JAVA_HOME/bin:$PATH: 
export JAVA_HOME PATH CLASSPATH 

  不多解释了,输入完毕后摁一下esc键退出插入模式,进入命令模式,然后直接输入:x回车即可(输入的是冒号和小写x表示保存后退出)。

  配置完之后需要将配置生效,执行下面的命令:

[007@localhost ~]$ source .bash_profile

3.5测试

  配置完java环境变量后,需要测试下java环境变量设置的正确与否,常用的是使用java -version来查看能否得到正确的jdk版本信息,个人建议写一个简单的java程序来检验下最靠谱,相信我。
  
  随便找一个位置建立一个java程序文件,比如在/home/007下新建一个HelloJava.java文件,你可以使用gedit来编辑这个文件,增加下面的代码后保存:

public class HelloJava{
    public static void main(String[] args){
        System.out.println("How do you do?");
    }
}

  在终端中输入以下命令:

[007@localhost ~]$ cd /home/007
[007@localhost ~]$ javac HelloJava.java
[007@localhost ~]$ java HelloJava

  如果能看到打印出来How do you do?说明安装配置成功了,一般第二行执行完毕没有提示任何东西就说明OK了,有问题的话第二行命令执行完就会报错,如果有问题的话请将提示的错误信息贴完整再来讨论,没有错误信息很难给出满意的答复。

4RedHat安装R过程

  我使用的R安装包为官网下载的R_3.1.2.tar.gz文件,可自行从官网下载或者从我上传的下载文件中查找。

4.1检查gcc环境

  R的安装需要使用gcc和gfortran命令,通常RedHat下自带了gcc,而gc++和gfortran是没有安装的,我们在安装前最好检查下,当然你直接执行下面的命令,根据提示进行必要的依赖包安装也是可以的。
  查看gcc环境的命令如下:

[007@localhost Desktop]$ rpm -qa | grep gcc

  如果得到的结果中包含了gcc-c++和gcc-gfortran开头的文件,那恭喜你可以继续进行下面的安装了,如果你得到的结果只包含一个gcc开头的,那你需要安装gcc-c++和gcc-gfortran。安装文件在我给的下载链接中都有,下载解压后,进入到该文件夹下,执行下面的命令。

  安装rpm包需要进入到root用户下才可以,而这两个文件的安装还需要依赖对应的lib文件,在安装之前需要安装他们的依赖包,以gfortran安装为例。如下图所示:
安装gfortran

  安装gc++与上面的命令相同,只要将安装文件改为对应的gc++的即可。

4.2解压R安装包

  下载的R-3.1.2.tar.gz是无法直接安装的,需要现将其解压到指定的目录下,不一定是安装目录,比如我这里将其解压到了/home/007下,我的压缩包就在/home/007目录下,因此我进入该目录执行下面的命令即可完成解压:

[007@localhost 007]$ tar –zvxf R-3.1.2.tar.gz

  解压完成后会在/home/007下建立R-3.1.2文件夹。

4.3配置R安装包

  进入到R-3.1.2文件夹下,执行以下命令:

[007@localhost R-3.1.2]$ ./configure --enable-R-shlib --prefix=/home/007/R3.1.2 --with-x=no --with-readline=no

  后面的参数非常重要,请一定要理解清楚
  
  –enable-R-shlib 这个参数特别重要,如果没有这个参数,那么你后面将无法使用Rserve

  –prefix=/home/007/R3.1.2 这个参数是用来定义R的安装位置的,一定要保证这个目录存在,如果没有这个目录,请先建立这个目录,不指定这个目录的话会安装到解压目录即/home/007/R-3.1.2中,不建议这样,请指定一个空的目录

  –with-x=no 表示不使用X-Windows系统,也就是类Unix操作系统的GUI, 一般不会使用这个,但默认为yes,如果你没有安装libx的话会报错的,所以我们直接设置为no

  –with-readline=no 表示不使用系统的readline库,如果系统上没有libreadline,此选项填“no“,默认是yes,但是我的系统下没有安装readline库,而且我也不会在RedHat的命令终端中一行一行的写R程序,我将其设置了为no,其结果是我们无法使用上下左右键来查找使用过的命令了,呵呵,也罢,反正我也不会写在终端中写多少行R命令,如果你要用的话,建议你先查找下你的机器上是否安装了readline,如果没有的话我的安装包中有,将其安装上之后再设置为yes,执行上面的命令即可

  很多时候我们在执行这个命令时出现了问题,请确保我上面写的这四条都已经明白了,还有问题时再将提示的错误发到评论里,我帮你看看。执行完会提示下面的内容:
configure完成

4.4编译R安装包

  configure完毕后,需要执行编译命令,这个的执行过程比较长,请耐心等待下。同样在解压缩后的目录R-3.1.2下执行下面的命令:

[007@localhost R-3.1.2]$ make

  执行完毕后的提示内容,只截取了最后一部分,如下所示:
R编译完毕

4.5安装R

  接下来执行安装命令,还是在解压缩后的目录R-3.1.2下执行下面的命令:

[007@localhost R-3.1.2]$ make install

  执行完毕后的提示内容如下所示(只截取了最后一部分):
R安装完毕

4.6配置R环境变量

  参见3.4内容,将.bash_profile文件修改为如下的形式:
R环境变量设置

  保存后执行source .bash_profile命令使配置生效。

4.7检验R安装

  修改完R环境变量并使之生效后,可以在终端中输入R进入R命令窗口,如下图所示:
R命令窗口

  上图中输入R之后会提示你安装的R版本以及一些使用说明,最后三行是我的测试程序,我输入了一个向量data,然后查看了该向量。

  输入q()可以退出R命令行模式。

5RedHat安装Rserve过程

5.1Rserve安装

  因为是离线安装,因此需要事先准备Rserve安装包,我这里使用的是Rserve_1.8-1.tar.gz文件,我提供的安装包中也存在这个,请根据实际情况下载或从官网下载。
  
  在终端中执行下面的命令:

[007@localhost ~]$ R CMD INSTALL /home/007/Rsrc/Rserve_1.8-1.tar.gz

  安装过程顺利的话很快,截图如下:
Rserve安装过程

  安装成功后提示如下:
Rserve安装成功

  可以看到最后提示了”Done(Rserve)“说明安装成功了。

  如果说这里出现了安装错误的提示,请确认安装R的时候认真阅读了我写的四个参数的意义

  启动Rserve的命令为:

[007@localhost ~]$ R CMD Rserve

  启动成功控制台会提示“Rserv started in daemon mode.”启动成功后的界面提示如下图所示:
Rserve启动成功

  此时就可以使用Rserve调用R了,但是只限于本地调用,外部电脑无法调用,Rserve默认配置下是不允许远程调用的,如果不需要外部访问可以忽略下面的配置内容。

5.2Rserve配置

  使用下面的命令来查看Rserve的配置信息:

[007@localhost ~]$ R CMD Rserve --RS-settings

  执行完毕后会提示Rserve的配置信息,包括配置文件的所在位置,是否允许外部访问等等,默认读取的配置文件一般是在/etc/Rserv.conf中,虽然列出了默认的配置文件,但是默认该配置文件是不存在的,这里只是告诉用户如果需要配置的话新建该配置文件然后在该配置文件中进行配置即可。

  因为我需要远程调用RedHat下的Rserve,因此我需要开启远程访问功能,而etc文件夹下新建文件是需要root权限的,因此我还需要切换到root用户下新建一个Rserv.conf文件,并在其中添加一行代码,如下:

remote enable

  添加完毕保存,然后重新启动Rserve即可完成配置了。

5.3其他Rserve相关命令

5.3.1查看Rserve状态

[007@localhost ~]$ ps -aux | grep Rserve

  这时会列出所有Rserve的进程,包括进程号2766,如下图所示:
Rserve进程

5.3.2查看Rserve访问情况

[007@localhost ~]$ netstat –ntlp|grep Rserve

  结果如下:
Rserve访问
  0.0.0.0表示所有都可以访问(开启远程访问后状态),127.0.0.1表示只允许本地访问。端口号是6311,默认的端口号。

5.3.3结束Rserve进程

[007@localhost ~]$ kill -pid 2766

6结束语

  安装完Rserve后,当需要通过Rserve调用R时,需要在安装好Rserve的电脑上启动Rserve方能进行调用。

  此外,如果安装R的服务器上配置了防火墙策略,还需要修改防火墙,具体配置这里不再详细说明,请查阅相关资料进行。

  下一篇内容将具体介绍如何使用Java语言调用R。


送人玫瑰,手有余香,转载请注明出处。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值