Ubuntu下安装CNVnator方法简介

最近工作需要用到cnvnator,之前只在centos下安装使用过cnvnator,现在换成了Ubuntu系统,安装编译cnvnator遇到了一列的坑,只想说cnvnator不愧是拷贝数变异检测界最难安装软件!在调试过程中查了很多资料,感谢有大家分享经验才得以调试安装成功,尤其是这两篇文章,很有帮助,CNVnator安装使用说明 - (jianshu.com),https://bbs.huaweicloud.com/forum/thread-37696-1-1.html。按照上述流程,我编译过程中还是遇到的一些报错,现在将我的解决经验与大家共享。

(一)环境要求

我的是ubuntu16.4 ,gcc是5.4。可以用 cat /proc/version查看Ubuntu和gcc版本信息,这个信息用于选root版本,网上有人说需要选择与gcc相匹配的root包,我用的与gcc版本不同的包也安装成功了,当然尽量版本信息一致,可以减少出问题的几率。

(二)依赖包的要求

 CNVnator的安装依赖于samtoolsroot包,samtools选择的samtools1.1.0,我尝试过samtools1.2,报错信息要比samtools1.1.0多,所以最终选用的samtools-1.10,可以在SAMtools/BCFtools/HTSlib - Downloads官网下载。

1.samtools安装

下载好samtools-1.10.tar.bz2文件后,解压缩

tar -xvf samtools-1.10.tar.bz2 

cd samtools-1.10

./configure --prefix=/path/to/samtools   ###prefix后面添加samtools安装目标路径

make all all-htslib && make install-htslib

将samtools添加到环境变量中

export PATH=/path/to/samtools/bin:$PATH

export LD_LIBRARY_PATH=/path/to/samtools/lib:$LD_LIBRARY_PATH

2. root 安装

root的官网上(https://root.cern/)提供了编译好的root包,解压以后直接可以用,选择与gcc相对应的版本就可以,我用的root 6.16,也可以用6.18-gcc5.4这个,这是下载链接 Release 61800 - ROOT

下载了gz文件后

用tar -xvf解压得到root文件包,就可以了

将root添加到环境变量中,这一步一定要做!!!不然后面会报很多错误

export PATH=/path/to/SOURCE/root/bin:$PATH

export LD_LIBRARY_PATH=/path/to/SOURCE/root/lib:$LD_LIBRARY_PATH

(三)CNVnator编译和安装

前面两步安装基本没啥问题,这一步是报错最多、调试最久的。

1 下载CNVnator0.4.1安装包

网址:https://github.com/abyzovlab/CNVnator

2 解压缩

unzip CNVnator_v0.4.1.zip

3 建立软连接

cd CNVnator_v0.4.1/src  ####进入CNVnator文件夹下的src文件夹

ln -s /path/to/samtools samtools   ####这里的path/to/samtools是你从官网下载下来后编译过的samtools文件夹,不是你安装目标文件夹,这个一定不要搞错,比如我下载了 samtools-1.10.tar.bz2后,我是在/analysis目录下解压得到的samtools-1.10,那么我的path/to/samtools就是/analysis/samtools-1.10

ln -s /path/to/root root_build   ####这里的path/to/root是你解压root的gz文件后,所得root文件夹所在目录

make

(四)错误调试

错误一   gcc编译时出现DSO missing from command line

这和上面引用文章里遇到的问题一样的,我的错误信息覆盖掉了,引用一下他的来说明一下。

/usr/bin/ld: samtools/htslib-1.9/libhts.a(hfile_s3.o): undefined reference to symbol 'HMAC@@libcrypto.so.10'

//usr/lib64/libcrypto.so.10: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

make: *** [cnvnator] Error 1

出现这个问题 ,通常是由于gcc指令没有引入正确的库导致的,DSO missing from command line这句提示前会有库名,根据库名,在gcc后面加上-lcrypto,具体解决方法为:

原指令: gcc XXXXX

新指令:gcc XXXXX -lcrypto

也就是说在指令的末尾加上缺失的库,也可以执行make命令时,使用以下命令:

make LIBS="-lcrypto"

错误二  出现ld:cannot find -lcrypto

查了很多资料,都说是ubuntu没有安装libz的库,如果确实没安装,可以用apt install zlib1g安装,但是我安装过,后来发现是anaconda2没识别apt install方式安装的包,我把环境变量更改了一下,将/usr/bin放在最前面,用/usr/bin/下的ld,就没有报这个错误了。具体操作如下:

export PATH=/usr/bin/:$PATH

错误三:出现dynsym local symbol at index 2 ;libdeflate库里的函数都不识别

(1)出现dynsym local symbol at index 2,采用如下方法解决,参考Ubuntu下编译Qt项目出现libQt5WebEngineCore.so报错 – 可可知秋 (cocozq.com)

sudo ln -sf /usr/bin/x86_64-linux-gnu-ld.gold /usr/bin/ld

(2)undefined reference to "libdeflate_crc32" "libdeflate_freee_decompressor"

这个问题花了最久的时间,最后是通过在gcc后面加-ldeflate解决的

你可能感兴趣的:(Ubuntu下安装CNVnator方法简介)