R如何安装老版本R的包
为什么要安装老版本的包
升级 R 版本后,最常见的问题之一就是某些旧包暂时还没有适配新版本。表现通常是 install.packages() 或 Bioconductor 安装时直接报错,说当前 R 版本不可用。
这篇文章记录一个最实用的处理思路:当新版 R 无法直接安装目标包时,改为下载源码包并手动执行 R CMD INSTALL。这种方式虽然原始,但在很多服务器环境里反而更稳。
为了应用R版本更新带来的效率提升和bug消除,我将服务器上的R升级到了最新版本(当前为4.1),然后在使用一些包的时候就会出现
Warning message:
“package ‘clusterProfiler’ is not available for this version of R
或者
Warning message:
“package ‘EnrichmentBrowser’ is not available for this version of R
Warning message:
“package ‘qvalue’ is not available for this version of R
这样的错误,这是由于clusterProfiler或者EnrichmentBrowser,qvalue没有跟的上R的更新步伐,如果需要在新版本上使用的话,必须要使用一些特别的安装手段
安装前先检查什么
在手动安装源码包之前,建议先确认 3 件事:
- 当前 R 版本
- 包对应的源码版本
- 系统是否具备编译环境
可以先执行:
R --version
R CMD config CC
R CMD config CXX
如果服务器没有基础编译工具,源码安装通常会在中途失败。
通过源码安装
大部分时候这是最稳定的方式,虽然无法通过R的命令直接安装,但是可以通过下载源码的方式安装。比如qvalue
- 首先下载安装包 在 Bioconductor 找到 qvalue 的安装包下载地址进行下载
wget https://bioconductor.org/packages/release/bioc/src/contrib/qvalue_2.26.0.tar.gz
- 安装 直接在shell上调用R的安装命令
R CMD INSTALL qvalue_2.26.0.tar.gz
如果你已经把源码包下载到本地,也可以在 R 交互环境里直接这样装:
install.packages("qvalue_2.26.0.tar.gz", repos = NULL, type = "source")
顺利的话就会有正确安装的提示
* installing to library ‘/home/teng/R/x86_64-pc-linux-gnu-library/4.1’
* installing *source* package ‘qvalue’ ...
** using staged installation
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (qvalue)
成功安装qvalue
同理可以依次安装其他的依赖包 最终安装好clusterProfiler
R CMD INSTALL clusterProfiler_4.2.2.tar.gz
* installing to library ‘/home/teng/R/x86_64-pc-linux-gnu-library/4.1’
* installing *source* package ‘clusterProfiler’ ...
** using staged installation
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (clusterProfiler)
如果缺少依赖包,通常需要按错误提示把相关源码包先安装完,再回头安装目标包。
如何验证是否安装成功
安装结束后,不要只看 DONE,最好再做一次加载验证:
R
library(qvalue)
library(clusterProfiler)
sessionInfo()
如果 library() 能成功执行,基本说明包已经正确装入当前 R 环境。
常见问题
1. 安装时提示缺少系统库或编译器
这是源码安装里最常见的问题。R 包本身可以下载下来,但底层依赖的 gcc、g++、make 或系统开发库不完整,就会直接编译失败。
2. 目标包装不上,其实是依赖包没装完
像 clusterProfiler 这类包依赖很多,真正报错点往往不在它自己,而在某个下游依赖。遇到这种情况,按报错顺序逐个安装依赖包最稳妥。
3. 不同 R 版本装到不同 library 路径
可以通过下面命令确认当前实际安装位置:
R -q -e '.libPaths()'
这样可以避免“已经安装但当前环境找不到”的误判。
延伸阅读
总结
本文介绍了如何在最新版本的R上安装各类软件包,由于R的安装方式与python不同,用最新版的R需要安装很多的依赖,这次我就下载了几十个源码并一个个进行安装,如果不想折腾的话还是选择老的R版本好了,3.5,3.6目前来说安装各类包最方便,推荐大家使用。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/326.html
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。