在Ubuntu 18 R 4.0.3 Biocconductor 3.12 下安装clusterProfiler遇到的坑

背景:要安装clusterProfiler做富集分析,BiocManager::install("clusterProfiler"),报各种包安装失败

技能:Linux 和 R 安装包的方式

首先要区分是Linux的包,还是R的包

Linux的包,可以先安装apt-get

然后使用sudo apt-get install pkgname 或者sudo apt install pkgname

如果使用了conda

也可以使用conda install pkgname ,未提升下载包的速度,可以使用国内的镜像,方法是修改~/.condarc文件

安装R下的包时,可以使用R自带的install.packages("pkgname"),切换软件源的方法是chooseCRANmirror(),同样是选择国内源,可以提升下载速度。

也可以先安装BiocConductor,然后使用BiocManager::install("pkgname"),切换软件源的方法是

chooseBioCmirror(),这里又涉及到另外一个问题,如果选择国内源,而你的BiocConductor版本较低,可能找不到想要的包,还是需要切回默认的源。例如北大的源软件包很多只支持3.15以上,我的3.12就找不到想要的包。

建议是安装环境时将主要的包一次性安装好,保证所有的包都是最新且满足依赖关系。

问题1、安装stringi报错依赖库icudt61l.zip无法自动下载的问题

报错的截图没存,大概意思就是下载icudt包失败。原因是文件在外网,网络不通,解决办法:

1,手动下载所需要的文件 icu4c-69_1-data-bin-l.zip 到指定目录,例如/home/bio/tmp/

地址:https://download.csdn.net/download/ytybdgh/86823502

2,在Linux环境下下执行:

R CMD INSTALL --configure-vars='ICUDT_DIR=/home/bio/tmp/' stringi

或者进入R后执行

install.packages("stringi", configure.vars='ICUDT_DIR=/home/bio/tmp/')

如果是已经下载好stringi的文件,通过如下方式升级

install.packages("/home/bio/tmp//stringi_1.7.8.tar.gz", configure.vars='ICUDT_DIR=/home/bio/tmp/',repos = NULL)

问题2 在R里安装systemfonts报错:

image.png

核心报错是这一句:

ft_cache.h:9:10: fatal error: ft2build.h: No such file or directory 9

路线 1 按照 这个链接 https://cloud.tencent.com/developer/ask/sof/1168187 里面的解决方案

sudo apt-get update sudo

apt-get install libfontconfig1-dev

结果安装libfontconfig1-dev这个包时依赖的libexpat1-dev 又依赖libexpat1,然后报错当前版本高于需要版本,通过

sudo apt-get install libexpat1=2.1.0-4ubuntu1.4进行降级

之后再根据类似提示对libc6降级时,又需要对大量重要的库降级,就放弃了这条路

路线 2 参照https://blog.csdn.net/qq_41104439/article/details/124708889

通过软链接解决,方法无效

ln -s /usr/include/freetype2/ft2build.h /usr/include/

路线3 从第一个问题和下面这个链接中获得灵感

https://blog.csdn.net/Wing_kin666/article/details/106020600

手动配置INCLUDE_DIR,不再报上面的错误

install.packages('systemfonts',configure.vars='INCLUDE_DIR=/home/bio/miniconda3/envs/rna-seq/include/freetype2/')

新报错如下:

** testing if installed package can be loaded from temporary location

Error: package or namespace load failed for ‘systemfonts’ in dyn.load(file, DLLpath = DLLpath, ...):

unable to load shared object '/home/bio/miniconda3/envs/rna-seq/lib/R/library/00LOCK-systemfonts/00new/systemfonts/libs/systemfonts.so':

/home/bio/miniconda3/envs/rna-seq/lib/R/library/00LOCK-systemfonts/00new/systemfonts/libs/systemfonts.so: undefined symbol: FcFontSetDestroy

Error: loading failed

Execution halted

ERROR: loading failed*

核心报错是 undefined symbol: FcFontSetDestroy

搜索发现这个函数是在fontconfig.h中,于是在Linux环境下,conda环境下,R环境下尝试卸载freetype2,fontconfig

下载systemfonts源文件,阅读configure文件,手动编译,以为安装完成了,还是不行。(需要1 configure 2 make 3 make install )

阅读configure文件发现存在一个command -v pkg-config 判断是否支持pkg-config,于是通过sudo apt-get install pkg-config安装后继续尝试安装systemfonts,此时报错freetype2

* installing *source* package ‘systemfonts’ ...

** package ‘systemfonts’ successfully unpacked and MD5 sums checked

** using staged installation

Package fontconfig was not found in the pkg-config search path.

Perhaps you should add the directory containing `fontconfig.pc'

to the PKG_CONFIG_PATH environment variable

No package 'fontconfig' found

Package freetype2 was not found in the pkg-config search path.

Perhaps you should add the directory containing `freetype2.pc'

to the PKG_CONFIG_PATH environment variable

于是设置PKG_CONFIG_PATH

发现miniconda3/lib 和 miniconda3/envs/rna-seq/lib 下都有freetype2,于是删除了~/miniconda3/lib 目录下的freetype2相关文件

然后将包配置文件目录设置到虚拟环境的环境变量rna-seq中

conda env config vars set PKG_CONFIG_PATH=/home/bio/miniconda3/envs/rna-seq/lib/pkgconfig/

再次执行安装systemfonts,终于成功了,说明pkg-config这个包是一个好的工具,可以把依赖的头文件目录和库目录都配置好,后面安装clusterProfiler也比较顺利了。

你可能感兴趣的:(在Ubuntu 18 R 4.0.3 Biocconductor 3.12 下安装clusterProfiler遇到的坑)