lapack安装_在集群环境中安装R

78a8676fecdbbbd4f28c7ee5e7998a8b.png

在没有root权限且暂时无法联系到管理员的集群环境下如何解决需要使用R语言的需求?

关键词: PBS作业调度系统; HPC; R;

本文最初思路构思于2018/05,成文于2018/10/17

本文背景是在我的最新一篇论文(上位基因检测机器学习算法创新)临近实验尾声时,已经完成在模拟数据中的检测,需要在真实数据(e.g. WTCCC)上进行测试。奈何真实基因数据过于庞大,本地、单机的解决方案捉襟见肘,所以需要调用学院的集群来进行数据处理和运算。

本文设定实验环境有一个最大的痛点是无法重启,原因有二。其一,我并非管理员只是使用者。再一个,集群并非是我一用户在使用。所以使用本文的方案,无需重启集群,且不需要拥有管理员权限

TL;DR (太长不看): This article is designed to instruct the installation process of R on a cluster, it may resemble the same process of installing R on a regular Linux machine, that's because it is. The two processes are nearly identical, but most people just don't know about this, which is the reason I compiled this blog.(本文旨在指导集群上R的安装过程,它可能类似于在常规Linux机器上安装R的过程,因为两者确实是相似的,但是大多数人都不知道这件事,而这就是我编写这个博客的原因)。

一、集群操作环境

系统环境:CentOS/Redhat系--20节点集群
登陆节点硬件配置:Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz

据有经验的老司机说装最新版本的R有可能会出现什么bug所以要装旧一点版本的R。所以我使用了与本机(Mac)开发环境相同的R版本:3.4.1。我已经开发完毕的R包也是基于这个版本的R。

另外一点是需要集群已经安装了gcc,不需要7.1.0那么新的版本,但最少也要4.4.7这样的版本。

二、安装包下载

2.1 文件夹创建

  • 进入登陆节点的路径下,建立两个文件夹:package、src
  • 进入src中:cd src

2.2 下载R安装包

  • src文件夹中使用如下命令:
$> wget https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz

$> tar -zxvf R-3.4.1.tar.gz

# -z:有gzip属性的
# -x:解压
# -v:显示所有过程
# -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved

三、安装R以及各种依赖

以下出现的命令建议一条一条复制粘贴回车运行,不过高端玩家搞一个.sh文件运行也可行。

3.1 直接安装R-3.4.1会遇到的问题

  • src文件夹中使用如下命令
cd R-3.4.1
mkdir builddir
cd builddir
 ../configure --prefix=$HOME/packages/R '--with-cairo' 
 '--with-jpeglib' '--with-readline' '--with-tcltk' 
 '--with-blas' '--with-lapack' '--enable-R-profiling' 
 '--enable-R-shlib' 
 '--enable-memory-profiling'
# Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved

走到这步,zlib会报错,不用担心, 一切尽在掌握中。

因为这么直接安装R一定不会成功。包括zlib,R的安装还需要很多依赖。所以与其不停重新安装R看它报错哪个再去修依赖,不如全部提前安装好再回头去装R这样一次成功。所以下面的每部分,都应该在安装R之前执行,不过我也会把如果不提前装以下某个特定依赖而直接安装R会产生的报错信息一并给出,作为后面来的朋友的troubleshoot。

3.2 安装zlib依赖

3.2.1 本部分是针对安装R中出现类似如下报错

checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib
library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

3.2.2 zlib依赖安装命令

cd ~/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/packages
make
make install

3.3 安装bzip依赖

3.3.1 本部分是针对安装R中出现类似如下报错

checking bzlib.h presence... yes
checking for bzlib.h... yes
checking if bzip2 version >= 1.0.6... no
checking whether bzip2 support suffices... configure: 
error: bzip2 library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

3.3.2 bzip依赖安装命令

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

# 记住要加入一个 -fPIC 到 CFLAG 。(在 Makefile中CFLAG=-fPIC -Wall -Winline -O2 -g...)
# Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved

make -f Makefile-libbz2_so
make clean
make
make -n install PREFIX=$HOME/packages
make install PREFIX=$HOME/packages

3.4 安装liblzma依赖

3.4.1 本部分是针对安装R中出现类似如下报错

checking whether bzip2 support suffices... no
checking for lzma_version_number in -llzma... no
configure: error: "liblzma library and headers are required"

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

直接安装liblzma依赖我就没见有人成功过,更好的解决办法是安装一个名为xz的包,它包含了liblzma,而且安装成功率极高。

3.4.2 xz依赖安装命令

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 -j3
make install

3.5 安装pcre依赖

3.5.1 本部分是针对安装R中出现类似如下报错

checking for pcre/pcre.h... no
checking if PCRE version >= 8.10, < 10.0 and has UTF-8 support... no checking whether PCRE support suffices... configure: error: pcre >= 8.10 library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

3.5.2 pcre依赖安装命令

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 
make install

3.6 安装libcurl依赖

3.6.1 本部分是针对安装R中出现类似如下报错

checking libcurl version ... 7.19.7
checking curl/curl.h usability... yes
checking curl/curl.h presence... yes
checking for curl/curl.h... yes
checking if libcurl is version 7 and >= 7.28.0... no
configure: error: libcurl >= 7.28.0 library and headers are 
required with support for https

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

3.6.2 libcurl依赖安装命令

cd ~/src
# Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved
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 -j3
make install

3.7 所有依赖都安装完毕,重新安装R

cd ~/src
cd R-3.4.1/
rm -rf builddir # Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved
mkdir builddir
cd builddir/
../configure --prefix=$HOME/packages/R --enable-R-shlib=yes --with-tcltk
make
make install

此时按照我的情况,R直接成功安装。

四、调用R来跑你的代码

因为我只是集群的使用者,没有管理员权限,所以我能做的只有通过修改.bashrc文件来在命令行直接通过命令R、Rscript来调用R。

vim ~/.bashrc

在vim下修改.bashrc文件中R_HOMER_LIB(加入这几个变量)

# .bashrc file under vim, add these lines
export R_HOME=$HOME/packages/R
export R_LIBS=$HOME/packages/R/lib64/library # Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved
export PATH=$PATH:$R_HOME/bin

source命令使.bashrc文件的修改生效:

source ~/.bashrc

五、PBS脚本的编写--用来在集群中运行R程序

与文章主题相关度不高故暂不添加。

如果有需要,想了解这部分的内容,在评论区提出,然后点赞。

如果很多人有此需求,我会考虑增加本部分。

最后附一张集群节点当前占用情况图:

2ba58e06eee496ab73550aa1bb58d0e8.png

Reference

[1] Paul E. Johnson, Building R-devel on RedHat Linux 6, PJ. Mostly Harmless, 2016.

首发于我的优快云博客。

--------------------

感觉不错就点个赞,以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值