当前位置: 首页 > 科技观察

BioArchLinux:ArchLinux生物信息学社区

时间:2023-03-13 07:38:00 科技观察

为什么会有BioArchLinux项目?以目前科学相关的发行版为例,大部分都是基于Ubuntu的,比如Bio-Linux、PoseidonLinux;还有基于CentOS或RHEL的,例如ScientificLinux。但最终,这些发行版都慢慢地不活跃了,而ScientificLinux发布的各种公告也显示出他们的身不由己。从ScientificLinux的经验可以看出,如果将各种软件包打包在一个依赖商业公司或由商业公司主导的发行版上,发展方向将变得不可知,原先的目标和计划自然也无法实现。得以实现。起初,ScientificLinux依赖于付费的Linux发行版RHEL,后来依赖于商业公司的免费社区发行版CentOS(CentOS8之前是稳定发行版),RedHat草草结束了CentOS8的生命周期,进而支持滚动发行版CentOSStream(现在是RHEL的上游发行版),因此ScientificLinux不得不成为基于CentOSStream的发行版。只能说,ScientificLinux一开始就做出了错误的选择。从Bio-Linux的角度来看,Bio-Linux本质上是将各种软件包打包到Ubuntu中后形成的发行版。这必须有一个循环。在这个一年或者两年的周期中,各种软件总会更新,而Bio-Linux没有考虑这个问题,所以会出现使用过时版本来分析数据的情况。显然,这不利于研究。而且,自从2014年发布基于Ubuntu14.04LTS的Bio-Linux8之后,就没有新的版本发布,而Ubuntu22.04LTS已经出来了。Bio-Linux软件包不仅陈旧,而且非常复杂。他们没有我需要的所有包,而且他们有很多我不需要的包。这无疑增加了我PC的负担。PoseidonLinux也有类似的问题。这种发布发行版的方式滞后,需要重装系统,特别不方便。最好直接操作一个各种包的仓库,可以快速更新,不需要频繁发布ISO文件就可以把软件更新到最新版本。因此,如果要长期使用,那么建议使用非商业公司关联的Linux系统;如果你需要参与Linux的开发,那么你需要找一个方便使用的第三方仓库/官方仓库,不关联商业公司distro。这里我们选择ArchLinux。同时,我们也不想只是AUR的一群贡献者,因为我自己的愿景是,这个群体可以像RedHat的发行版那样成为一个SIG,但是SIG的运作方式是贡献包到官方仓库.AUR只存储一个脚本,而不是预编译包。这带来了很多麻烦。首先,AUR不能和官方仓库里的包冲突,但这对于生物信息的目标用户群来说是一件很麻烦的事情。比如我要找picard,但是社区仓库里的picard已经是另外一个同名的软件了,但是只是在社区仓库里,我不会用,所以只好找picard-tools里的一波三折后的AUR。AUR还有一个不方便的地方就是软件包源不一定解封。我曾经热情地向学姐推销过Arch系统的release版本,她也觉得很好用,但是当她想从AUR下载软件时,网络限制了她的想象力。但是,当我们用镜像源形成一个仓库时,就不用担心这个问题了,来自互联网封锁国家的人们也不需要忍受网速慢和法律风险来访问他们需要的软件。如何使用BioArchLinux?首先,BioArchLinux本身的属性决定了用户可以在哪里使用它。BioArchLinux是一个面向生物学家的ArchLinux社区,包括一个用于生物学软件的ArchLinux存储库、一个可编辑的wiki和一个Matrix聊天频道。在ArchLinux中使用BioArchLinux由于其自身的属性定义,它可以与ArchLinux及其衍生产品(不包括Manjarostable&testing)一起使用,从BioArchLinux安装软件很容易。只需几个简单的命令即可安装所需的软件包。#echo-e"[bioarchlinux]\nServer=https://repo.bioarchlinux.org/\$arch">>/etc/pacman.conf#pacman-key--recv-keysB1F96021DB62254D#pacman-key--fingerB1F96021DB62254D#pacman-key--lsign-keyB1F96021DB62254D#pacman-Syy#pacman-Spkg_name刚接触Linux的时候用的是Ubuntu。想装盛信软件的时候,为了循环依赖处理了一下午。这可能是某些发行版的特性,而且由于我是图形化安装的,所以我实际上不太确定将来如何迁移系统。对于小白来说,如果最后安装好的环境需要迁移的话,就很难避免重复性的工作。ArchLinux的特性避免了很多问题。考虑到打包的粒度,循环依赖可以说是非常少见的。另外一点就是当你需要构建一个包的时候,你只需要会写shell脚本,看看wiki,事情就会简单很多。与Debian等发行版相比,这实际上可以帮助您迁移已安装的软件。当然,与其他存储库不同,BioArchLinux存储库在可能的情况下在每个包描述中提供了一个DOI。这使用户能够轻松了解每个包的目的和方法,并在准备发布时快速识别适当的引用。$pacman-Ssdoi_number$pacman-Qipkg_name在WSL中使用BioArchLinux此外,当Windows和macOS用户需要使用Linux环境运行生物信息学软件时,也可以轻松使用BioArchLinux。因为BioArchLinux也提供了WSL和Docker镜像。对于Windows用户来说,WSL是首选,因为Docker在Windows下依赖于WSL。只需在任何镜像站点的wsl文件夹下找到tar文件即可。解压,在安装wsl的前提下双击BioArch.exe文件,即可开始安装成功。安装完成后,输入以下命令进入:wsl-dBioArch使用前需要做一些初始化工作,比如初始化WSL,这里的镜像地址可以改成自己喜欢的镜像。镜像列表见mirrorlist仓库中的mirrorlist.bio。#echo'Server=https://mirrors.sdu.edu.cn/archlinux/$repo/os/$arch'>/etc/pacman.d/mirrorlist#echo'Server=https://mirrors.sdu.edu.cn/bioarchlinux/$arch'>/etc/pacman.d/mirrorlist.bio#pacman-Syu此时就可以使用WSL了。在Docker中使用BioArchLinux至于Docker的使用,和WSL类似,只是安装好Docker后,使用如下命令进入。进入后,仍然需要使用WSL初始化命令来初始化Docker容器。#dockerpullbioarchlinux/bioarchlinux#dockerrun-it--privileged--namecontainer_name--restart=alwaysbioarchlinux/bioarchlinux/bin/bashBioArchLinux是如何工作的?BioArchLinux运行时BioArchLinux存储库由几个开源包维护。主要工具是一个名为lilac的python应用程序。最基本的一步就是按照ArchLinux的标准和lilac.yaml写一个脚本。我们编写一个PKGBUILDshell脚本和一个YAML文件(以及可选的Python脚本)并将它们放在Git存储库的一个文件夹中。nvchecker读取lilac.yaml,获取上游网站信息,可以查看最新版本。如果nvchecker无法从上游站点找到包版本,它会向管理员发送电子邮件报告问题。nvchecker信息发送给lilac,lilac判断包是否需要升级。如果软件包需要升级,lilac会将软件包发送到ArchLinux打包工具devtools。devtools为包提供了一个干净的环境,只有PKGBUILDshell脚本中的依赖项列表允许构建。这避免了在使用过程中丢失依赖项。如果包构建失败,则会自动向包维护者发送警告电子邮件。如果包构建成功,archrepo2会将ArchLinux包放入特定路径,并生成一个新的数据库文件,形成一个全新的包仓库。如果lilac.yaml包含维护AUR的指令,则包更新也将发送回AUR。整个构建过程被记录为日志文件,可以使用Rust应用程序bioarchlinux-packages读取并显示在日志网站上。我们的wiki建立在MediaWiki之上。所有人都可以免费为本网站贡献有关生物信息学软件和生物信息学概念和术语的使用。BioArchLinux展望上面说了那么多好东西,但是BioArchLinux也有很多缺点。让我们从仓库开始。虽然我们有大约4.2k的软件包,并且在短短一年内维护了大约4.7%的AUR包,但与DebianMed和bioconda相比,我们在数量上有很大的差距。急需更多的维护者参与,包装质量需要不断提升。此外,更为紧迫的是,我国仅有南京大学、西安交通大学、山东大学、南京邮电大学等少数高校作为镜像源。希望更多的镜像站点可以加入我们。另外,由于电脑资源问题,我们没有存档网站,这在一定程度上给回滚带来了困难。剩下的就是扩大仓库的受众,加强社区的维护。虽然我们有WSL和Dokcer,但有些人喜欢在虚拟机中运行,但是我们不能提供ISO文件,需要相关的维护者。我们也没有专门的wiki管理员。一段时间以来,由于没有限制用户注册,网站上充斥着垃圾邮件。甚至我们在网站建设上也存在不足,比如没有像ArchLinux那样的包搜索界面,这就需要更多开发者的参与。除此之外,如何使用具有非root用户角色的存储库仍然是一个大话题。我们非常欢迎更多的人加入我们的社区,一起做一些疯狂而美好的事情。不管多么艰难,我相信这个FFF(communityfriendly,userfriendly,earthfriendly)项目会长寿百年。(注:communityfriendly帮助维护ArchLinux社区的AUR包;userfriendly易于使用,以用户为中心;earthfriendly减少大家的编译次数,最大限度地减少计算机资源的消耗。)致谢非常感谢xTom、MickElliot和BipinKumar资助了这个项目,非常感谢所有在存储库上一起工作的BioArchLinux成员。另外,特别感谢ArchLinuxCNEvian和imlonghao,没有他们维护的软件,BioArchLinux不可能运行的这么流畅。同时,我们还要感谢南京大学、西安交通大学、山东大学、南京邮电大学等为BioArchLinux提供镜像的机构和个人。最后,感谢之前的生物信息学开源大会(BOSC)免收参会费用。