Ubuntu20.04下conda python3.6环境安装R的XML包失败如何解决
问题1:两行检查内容的具体含义
checking for xmlParseFile in -lxml2... no是XML包的编译配置脚本在检测当前环境的libxml2动态库(Linux下后缀为.so的库文件,-lxml2是链接器指定加载libxml2库的写法)是否包含xmlParseFile这个核心API函数,返回no代表未检测到符合要求的libxml2库。checking for xmlParseFile in -lxml... no是上一步检测失败后,脚本尝试检测旧版本的libxml库是否提供该函数,依然检测失败才会抛出libxml not found的错误。
你之前用apt安装系统级libxml2-dev无效的原因是:你使用了独立的conda环境,R的编译配置默认优先读取conda环境内的头文件、库文件路径,不会读取系统/usr目录下apt安装的依赖文件。
问题2:提高R包安装调试日志级别的方法
- 直接使用
install.packages安装时,添加verbose和保留日志的参数即可:install.packages("XML", verbose = TRUE, keep_outputs = TRUE)verbose=TRUE会把编译全流程的细节打印到控制台,keep_outputs=TRUE会把所有日志输出保存到当前工作目录下的XML.Rout文件中,方便后续排查。 - 手动编译R包时,可以进入解压后的包源码目录,运行配置脚本时添加
--debug参数,输出每一步检测的路径、报错的具体原因:./configure --debug
问题3:conda环境下编译安装XML包的步骤
优先推荐conda直接安装预编译的R包,可避开编译问题,同时后续安装DESeq2也更方便:
- 激活目标conda环境:
conda activate py36_test - 安装conda源的XML包:
conda install -c conda-forge -c bioconda r-xml - 可直接安装DESeq2,无需单独处理依赖:
conda install -c bioconda bioconductor-deseq2
如果需要手动编译安装,按以下步骤操作:
- 先在conda环境内安装编译所需依赖:
conda activate py36_test conda install -c conda-forge libxml2 libxslt gcc make - 从CRAN官网下载对应版本的XML源码包(tar.gz格式),解压后进入源码目录:
tar -zxvf XML_*.tar.gz cd XML - 指定conda环境内的xml2-config路径运行配置脚本(路径可参考你报错日志里的xml2-config地址):
./configure --with-xml2-config=/mnt/data/miniconda_python3/miniconda3/envs/py36_test/bin/xml2-config - 编译并安装:
make make install
安装完成后进入R执行library(XML)即可验证是否安装成功。
内容的提问来源于stack exchange,提问作者jamespa
相关产品推荐
相关产品推荐

