实话说,这是一个非常庞大的问题,因为这个牵扯到服务器硬件,系统等软件因素,还有一些网络问题导致的玄学问题,复杂性导致它很有挑战。
但是,我们不能因为有挑战性就放弃了,毕竟总会不停遇到这个问题,而且科研人从不低头。
所以,我不准备废话,直接上结论:
——————————————————————————————————————
R包安装出错,九成是某个依赖的R包安装失败导致,
对非科班出身的研究人员来说,这类问题大概率源头上解决不了,
我的经验表明这类问题换个思路九成都能解决:源码安装旧版本!
——————————————————————————————————————
举个例子
我想安装余教授课题组开发的多序列alignment呈现工具,ggmsa
第一步,确定安装基本要求
一看依赖我就有点挠头,R要求版本4.1.以上,我上次更新R还是安装服务器的时候,我的R是3.5.1,所以,我重新装了一个R
conda create -n Rv4 python=3.5 -y
conda activate Rv4
conda install -c conda-forge R
意外的安装成功!
第二步,按提示安装
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ggmsa")
CentOS + 非root用户+新装的最新版R+图形呈现用途的R包,不出意外地,报错了!
详细报错没保存,也不重要,因为我弄了半天没解决。
大体是安装ggmsa需要先安装ggalt, 而ggalt又依赖于proj4. 安装 proj4 时报错
configure: error: libproj and/or proj.h/proj_api.h not found in standard search locations.
*** Install PROJ library and if necessary set PKG_CPPFLAGS/PKG_LIBS accordingly.
ERROR: configuration failed for package ‘proj4’
网上的解决办法,五花八门,我的水平有限,都试过了,没有找到适合于非root用户的解决办法。
第三步,祭出我的大法:降版本源码安装
回到R运行:
install.packages("https://cran.r-project.org/src/contrib/Archive/proj4/proj4_1.0-8.1.tar.gz", repo=NULL, type="source")
安装成功!
第四步,重新安装ggmsa
BiocManager::install("ggmsa")
library("ggmsa")
安装成功!
总结:R默认安装最新版本R包,但是有时候你所用的计算机年纪大跟不上脚步,降低版本似乎是比较好的选择。
ps: 实际上版本选择有个技巧:安装A的依赖B时,选择B的版本,其发布时间应该早于A的,但是不一定全部OK, 例如这里proj4_1.0-8.1我们安装的版本发布于2019年,而依赖于它的ggalt_0.4.0发布于2017年,神奇的是也成功了,我推测应该是因为ggalt需要使用的proj4部分功能没有更新的缘故。
其它R包安装的问题,我在2019年写过一篇R包安装大全,可供参考。
总之,面对玄学一样的计算机问题,有时候换个角度思考反而能发现新世界。