最近在分析sQTL,用到了一款软件叫LeafCutter, 这个软件在做的第三步鉴定Differential Splicing时,是用封装好的leafcutter包来进行后续分析的。至此,我就开始了一个很crushing的安装过程。
原软件的安装过程参见https://davidaknowles.github.io/leafcutter/articles/Installation.html。
1、安装rstan包
Stan是由哥伦比亚大学应用统计系的研究人员在2012年开发的一款基于贝叶斯统计的计算软件。由C++编译而来的Stan,可在Windows、Linux、Mac平台进行安装,而且它提供了不同语言的接口,如R、Python、Matlab、Julia、Scala等,但目前大多数Stan使用者及资源来自R社群。
首先在服务器上进行安装,基于RedHat内核。
module load r
R
install.packages("rstan")
运行一段时间后报错,c++14 standard requested but cxx14 is not defined windows
============================================================================================================================
于是按照官网给的安装提示进行排查(https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started),如下添加dotR<-file.path(Sys.getenv("HOME"),".R")
if(!file.exists(dotR)) dir.create(dotR)
M<-file.path(dotR, ifelse(.Platform$OS.type=="windows","Makevars.win","Makevars"))
if(!file.exists(M)) file.create(M)
cat("\nCXX14FLAGS=-O3 -march=native -mtune=native",if( grepl("^darwin",R.version$os))"CXX14FLAGS += -arch x86_64 -ftemplate-depth-256"elseif(.Platform$OS.type=="windows")"CXX11FLAGS=-O3 -march=corei7 -mtune=corei7"else"CXX14FLAGS += -fPIC",file=M,sep="\n",append=TRUE)
M<-file.path(Sys.getenv("HOME"),".R",ifelse(.Platform$OS.type=="windows","Makevars.win","Makevars"))
file.edit(M)
之后再添加CXX14=g++,保存,运行
install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)
但依旧报错c++14 standard requested but cxx14 is not defined windows。
============================================================================================================================
于是又开始排查,发现rstan网站上安装时用的是gcc 4.9(https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux),而在服务器上的gcc 版本是4.8(cat /proc/version),因此对gcc进行了升级安装(在https://ftp.gnu.org/gnu/gcc/文件夹下选择下载)。由于是非root用户,只能在自己的目录下安装,安装过程如下:
cd /home/myname/software/
tar -zxvf gcc-4.9.4.tar.gz
cd gcc-4.9.4/
./contrib/download_prerequisites
mkdir gcc_compile
cd gcc_compile/
../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=/home/myname/software/gcc-4.9.4/gcc_compile --enable-threads=posix
make -j12
make install
g++ -v
之后再安装仍旧未成功
============================================================================================================================
再搜索,参考https://medium.com/@samstatsinn/r-and-stan-%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A-f63b764279a7中的linux部分对Makevars进行再次编辑,但是仍出错
============================================================================================================================
接着搜索,最后在这个网站又找到了一个提示(https://discourse.mc-stan.org/t/rstan-installation-on-rhel-6/6558/8),即在Makevars中添加CXX14 = g++ -std=c++1y,照做。最终Makevars的内容为
CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function -Wno-macro-redefined
CXXFLAGS+=-flto -Wno-unused-local-typedefs
CXX14FLAGS=-O3 -march=native -mtune=native -fPIC
CXX14=g++ -std=c++1y
保存,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE),仍旧有错误,但这次的错误不一样,
unable to load shared object '/home/myname/R/x86_64-pc-linux-gnu-library/3.4/rstan/libs/rstan.so':
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/myname/R/x86_64-pc-linux-gnu-library/3.4/rstan/libs/rstan.so)
============================================================================================================================
google一下“version glibcxx_3.4.20' not found (required by”的错误。按照https://itbilu.com/linux/management/NymXRUieg.html上的进行查看。
strings /usr/lib64/libstdc++.so.6 | grep GLIBC之后的确在系统路径中没有找到GLIBCXX_3.4.20,但在自己目录下安装的gcc文件夹中是有的。
cd /home/myname/software/gcc-4.9.4/gcc_compile/lib64
ls ##发现libstdc++.so.6.0.20
strings libstdc++.so.6 | grep GLIBC ##发现GLIBCXX_3.4.20
于是按照官网的提示(https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux的Special Note: CentOS 7.0部分),退出R,并将export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64改为export LD_LIBRARY_PATH=/home/myname/software/gcc-4.9.4/gcc_compile/lib64,然后打开R,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)
至此,linux上的rstan安装成功。
============================================================================================================================
最近又出现了新的问题。前段时间由于需要重新安装了一版R,把之前的文件覆盖掉了,rstan和leafcutter都不可以用了。下面是安装过程。
export LD_LIBRARY_PATH=/home/myname/software/gcc-9.1.0/gcc_compile/lib64,然后打开R,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)
之后出现了下问题。g++: error: unrecognized command line option ‘-std=gnu++14’。这是由于系统默认的gcc版本太低,只有4.8.5(gcc --version,或者在R下system('g++ -v')查看),但安装rstan需要更高版本,而之前已经在自己的home目录下安装了新版本gcc,现在只需要在安装的时候指定gcc的版本即可,此时就需要更改R的配置文件。即更改/home/.R/Makevars文件,更改后的内容如下:
CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function -Wno-macro-redefined
CXXFLAGS+=-flto -Wno-unused-local-typedefs
CXX14FLAGS=-O3 -march=native -mtune=native -fPIC
CC=/home/myname/software/gcc-9.1.0/gcc_compile/bin/gcc
CXX=/home/myname/software/gcc-9.1.0/gcc_compile/bin/g++
保存后退出。
之后下载rstan包(https://cran.r-project.org/src/contrib/rstan_2.21.2.tar.gz)到/home/myname/software/R-3.6.2/library。
现在开始安装如下
cd home/myname/software/R-3.6.2/library
/home/myname/software/R-3.6.2/bin/R CMD INSTALL rstan_2.21.2.tar.gz
安装成功
过程中如果遇到00LOCK-*类似的问题,直接 cd /home/myanme/software/R-3.6.2/library下删除
在windows上安装rstan开始也有错误,但比较好解决。
参照官网即可,https://github.com/stan-dev/rstan/wiki/Installing-RStan-from-source-on-Windows
在Mac上安装完全没问题。
2、安装leafcutter包
首先是在服务器上
if (!require("devtools"))
install.packages("devtools", repos='http://cran.us.r-project.org')
devtools::install_github("stan-dev/rstantools")
没问题,安装成功
在windows上
比较坑的是,需要的一个包doMC的新版本只能使用与Linux版的R,在windows上的R不适用,但是可以在https://cran.r-project.org/src/contrib/Archive/doMC/下到旧版的,这里我下的是1.3.5。下载下来存放到C:\Program Files\R\R-3.6.1\library下,然后从Rstudio里安装。之后按以下步骤进行leafcutter的安装即可,注意中间要求是否更新,选择不更新即可,或者直接回车。
if (!require("devtools")) install.packages("devtools", repos='http://cran.us.r-project.org')
devtools::install_github("stan-dev/rstantools")
devtools::install_github("davidaknowles/leafcutter/leafcutter")
在Mac上安装完全没问题
============================================================================================================================
总之,要注意的是需要修改Makevars.win中内容,且windows和Linux下的内容不一样。
一般windows下Makevars.win文件存放在C:\Users\Myname\Documents\.R文件下,服务器上该文件存放于自己的根目录下./R。