春江暮客

春江暮客的个人学习分享网站

R如何安装老版本R的包

2022-03-15 技术
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 件事:

  1. 当前 R 版本
  2. 包对应的源码版本
  3. 系统是否具备编译环境

可以先执行:

R --version
R CMD config CC
R CMD config CXX

如果服务器没有基础编译工具,源码安装通常会在中途失败。

通过源码安装

大部分时候这是最稳定的方式,虽然无法通过R的命令直接安装,但是可以通过下载源码的方式安装。比如qvalue

  1. 首先下载安装包 在 Bioconductor 找到 qvalue 的安装包下载地址进行下载
wget https://bioconductor.org/packages/release/bioc/src/contrib/qvalue_2.26.0.tar.gz
  1. 安装 直接在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 包本身可以下载下来,但底层依赖的 gccg++make 或系统开发库不完整,就会直接编译失败。

2. 目标包装不上,其实是依赖包没装完

clusterProfiler 这类包依赖很多,真正报错点往往不在它自己,而在某个下游依赖。遇到这种情况,按报错顺序逐个安装依赖包最稳妥。

3. 不同 R 版本装到不同 library 路径

可以通过下面命令确认当前实际安装位置:

R -q -e '.libPaths()'

这样可以避免“已经安装但当前环境找不到”的误判。

延伸阅读

总结

本文介绍了如何在最新版本的R上安装各类软件包,由于R的安装方式与python不同,用最新版的R需要安装很多的依赖,这次我就下载了几十个源码并一个个进行安装,如果不想折腾的话还是选择老的R版本好了,3.5,3.6目前来说安装各类包最方便,推荐大家使用。

R

友情链接

其它