前段时间电脑卡死,强制关机后电脑无法启动,后重装系统,然后又重新安装R和rstudio,在安装R包DESeq2的时候出现一系列报错。首先,执行安装命令后,出现报错:ERROR: compilation failed for package 'Hmisc' and 'RcppArmadillo'。字面意思就是这两个依赖包编译失败,那就一个一个解决。
先尝试安装Hmisc。
install.packages("Hmisc")
报错:dependency 'png' is not available for package 'latticeExtra'; ERROR: compilation failed for package 'jpeg'。这...依赖包的依赖包?没办法,那就再安装这两个依赖包。
install.packages("png")
出现报错:libpng16.so.16: cannot open shared object file: No such file or directory。很明显这是缺少了这个库文件。上网去查,发现有用yum安装的,有用conda安装的,都尝试了并没有用。
最后看到了一个别人解决类似库文件的方法(https://www.cnblogs.com/liang-wei/p/9513913.html)。首先直接查找libpng16.so.16文件,发现其中一个在/user/local/lib路径下面,然后做一个链接到/user/lib64下:
sudo ln -s /user/local/lib/libpng16.so.16 /user/lib64/libpng16.so.16
再尝试安装png包,无报错安装成功。然后安装jpeg包:
install.packages("jpeg")
依然报错:ERROR: compilation failed for package 'jpeg'。上网查了一下,说是缺少libjpeg的开发包内包含的头文件,安装libjpeg-devel即可(https://www.cnblogs.com/weiwg/p/6592516.html):
yum install libjpeg-devel
再尝试安装jpeg包,安装成功。两个依赖包安装成功后,安装Hmisc包,安装成功。最后,安装依赖包RcppArmadillo:
install.packages("RcppArmadillo")
报错:ERROR: compilation failed for package 'RcppArmadillo'。这个报错的原因是:在安装DESeq2包时,R会搜索最新的相关安装包进行安装,如果操作系统的版本较低与R包不兼容,就会出现编译等错误(https://blog.csdn.net/lichangzai/article/details/39960195)。
解决办法要么升级系统要么安装较低版本的R包,我选择了后者(操作系统过新也会产生一些问题,这台电脑操作系统版本原来为centos7.6,之后更新为centos7.8,之前强制关机后无法开机据说就是新版本操作系统的bug,好巧不巧让我给遇上了)。那么,就下载低版本R包:http://cran.r-project.org/src/contrib/Archive/RcppArmadillo。最新版本为0.9的,我选择了0.8当中最新版本的。
然后手动安装R包:
R CMD INSTALL -l /home/ngs/R/x86_64-redhat-linux-gun-library/3.6 RcppArmadillo_0.8.600.0.0.tar.gz
注意,这条命令要在安装包所在的路径下面运行,否则需要在安装包名称前面加上绝对路径。然后安装位置就是R的library路径下,有的系统可能有很多个R,要注意区分你现在运行的R在哪个路径下。安装成功后,直接在rstudio里面library该安装包,无报错说明安装成功。
所有依赖包全部安装成功后,最后安装DESeq2,无报错,运行正常,问题解决。