我参考了github上的安装指南:GitHub - broadinstitute/picard: A set of command line tools (in Java) for manipulating high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF.在Ubuntu22.04上安装picard,在此记录过程以便日后复现。文中提到注意事项是有用的。本来想把遇到的问题集中在文末以便提高安装流程在阅读上的连贯性,考虑到各种报错要需要及时提醒和解决,最终还是把问题和解决方法放到对应流程的位置。该记录会放置所参考安装指南的关键步骤的截图和便于复制的代码。。
①自选一个目录下载程序包
git clone https://github.com/broadinstitute/picard.git
cd picard/
我在~/software/目录下执行上述命令,clone后会在该目录下产生一个picard目录。
问题:在执行git clone命令时,出现报错:
使用[SOLVED] Git pull error: RPC failed; curl 16 Error in the HTTP2 framing layer. fatal: expected flush after ref listing - JTuto中的方法成功解决。该方法使用了如下命令:
git config --global http.version HTTP/1.1
设置HTTP之后就能够成功执行上述git clone。
注意:
程序包下载成功后,建议使用如下命令改回HTTP2,否则可能会导致下一步gradlew安装依赖包失败
git config --global http.version HTTP/2
我不知如何解决上图中shadow 5.1.0的安装,尝试先安装gradle未果后发现各种安装包下载速度似乎不太对劲,才想到尝试改回HTTP2,然后就可行了。
( 这段话无关紧要可以不看 ) 由于参考安装指南中提到picard是通过gradle来配置,所以我当时考虑了先安装gradle再安装picard。Gradle官网又提到安装gradle可以通过sdkman安装或者手动安装。作为一个小白我不建议通过sdkman安装gradle再安装picard,sdkman的安装过程也有些折腾,需要用到openssl的CA等。
②构建包含所有依赖项的完全打包、可运行的picard.jar
首先上一步的改回HTTP2要做一下,其次最好能升级到java17,才能顺利完成这一步
运行命令:
./gradlew shadowJar
问题:java版本过低
这里我参考了Debian/Ubuntu 升级java版本 - 知乎 (zhihu.com)
对java进行了升级,遇到了这样的问题:
我尝试先安装Libasound2,却提示:
尝试了提示中建议的命令:
sudo apt --fix-broken install
jdk-17安装成功。剩下的也是跟着文章中教程走,没遇到别的情况。
接下来只需要重新执行
./gradlew shadowJar
就可以了。
注意:
上述方法升级的java版本并不适用于先前已有的自建环境,只有base和新建的环境中才是java17。在base下通过
java -version
能够看到
切换到以前建立的环境中后,java版本依旧是当时创建环境使用的java8。
所以,我新建了环境来专门使用picard,新环境设置的python版本对此没有影响。
③使用picard
cd到picard安装目录下可以使用命令运行picard
java -jar build/libs/picard.jar
安装教程中提到的测试等其他部分可做可不做,我做了测试有几个小模块没通过,应该也无伤大雅,自己要用的功能正常就可以。
每次都要使用上述命令运行picard有点麻烦,我尝试把picard加入到环境变量,在.bashrc中做了添加并source,但仍然无法通过"java -jar picard.jar"来运行。
④创建快捷键以方便使用picard
创建快捷键 alias picard='java -jar /home/gyspace/software/picard_file/picard/build/libs/picard.jar' 并source,能够以"picard ViewSam -h"的方式来使用picard的ViewSam功能。linux创建快捷键的方法参见Linux 自定义alias快捷命令 - 简书 (jianshu.com)
至此,picard算是安装成功,可以使用了。