2021-11-12R包安装报错怎么解决

实话说,这是一个非常庞大的问题,因为这个牵扯到服务器硬件,系统等软件因素,还有一些网络问题导致的玄学问题,复杂性导致它很有挑战。
但是,我们不能因为有挑战性就放弃了,毕竟总会不停遇到这个问题,而且科研人从不低头。
所以,我不准备废话,直接上结论:
——————————————————————————————————————

R包安装出错,九成是某个依赖的R包安装失败导致,

对非科班出身的研究人员来说,这类问题大概率源头上解决不了,

我的经验表明这类问题换个思路九成都能解决:源码安装旧版本!

——————————————————————————————————————

举个例子

我想安装余教授课题组开发的多序列alignment呈现工具,ggmsa

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包安装

回到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包安装大全,可供参考。

总之,面对玄学一样的计算机问题,有时候换个角度思考反而能发现新世界。

你可能感兴趣的:(2021-11-12R包安装报错怎么解决)