BioArchLinux: Arch Linux 生物信息社區(qū)
為什么會(huì)有 BioArchLinux 項(xiàng)目?
以目前科學(xué)相關(guān)的發(fā)行版為例,它們大多基于 Ubuntu ,比如 Bio-Linux 以及 Poseidon Linux ;也有基于 CentOS 或者 RHEL 的,比如 Scientific Linux 。但是最終這些發(fā)行版都慢慢不再活躍,Scientific Linux 發(fā)出的各種 ??公告?? 也是表現(xiàn)出身不由己。
從 Scientific Linux 的經(jīng)歷可以看出,如果將各種軟件包打包在一個(gè)依賴商業(yè)公司或者由商業(yè)公司主導(dǎo)的發(fā)行版上,發(fā)展方向就會(huì)變得不可知,最初的目標(biāo)和規(guī)劃自然不能得以實(shí)現(xiàn)。最初 Scientific Linux 依賴付費(fèi)的 Linux 發(fā)行版 RHEL ,后期依賴商業(yè)公司的免費(fèi)社群發(fā)行版 CentOS(CentOS 8 以及之前是一個(gè)穩(wěn)定的發(fā)行版),紅帽將 CentOS 8 的生命周期草草結(jié)束,進(jìn)而支持滾動(dòng)發(fā)行版 CentOS Stream(現(xiàn)在是 RHEL 的上游發(fā)行版),因此 Scientific Linux 不得不變成基于 CentOS Stream 的發(fā)行版。只能說(shuō),Scientific Linux 一開(kāi)始就選擇錯(cuò)了。
再?gòu)?Bio-Linux 的角度來(lái)看待,Bio-Linux 本質(zhì)上是把各類軟件包打包到 Ubuntu 內(nèi)之后形成的一個(gè)發(fā)行版。這必然有一個(gè)周期,在這個(gè)一年或者兩年的周期內(nèi),各類軟件總會(huì)有更新的,而 Bio-Linux 不考慮這個(gè)問(wèn)題,所以會(huì)出現(xiàn)使用過(guò)時(shí)的版本來(lái)分析數(shù)據(jù)的情況,很明顯這不利于研究。而且, Bio-Linux 8 自 2014 年發(fā)布了基于 Ubuntu 14.04 LTS 的發(fā)行版之后,就沒(méi)在發(fā)行新的版本了,而目前 Ubuntu 22.04 LTS 都已經(jīng)出來(lái)了。Bio-Linux 的 ??軟件包?? 除了老舊,還特別冗雜,我需要的包他們不全有,我不需要的包他們有很多,這毫無(wú)疑問(wèn)增加了我 PC 的負(fù)擔(dān)。
Poseidon Linux 也有著類似的問(wèn)題。這種發(fā)布發(fā)行版的方式滯后且需要重裝系統(tǒng),特別不方便。實(shí)在不如直接經(jīng)營(yíng)一個(gè)各類包的倉(cāng)庫(kù),可以快速更新,不必頻繁發(fā)布 ISO 文件又可以將軟件更新到最新版。
所以,如果你希望想長(zhǎng)期使用,那么就建議使用非商業(yè)公司關(guān)聯(lián)的 Linux 系統(tǒng);如果你需要參與 Linux 的發(fā)展,那么你就要尋找一個(gè)方便使用第三方倉(cāng)庫(kù)/官方倉(cāng)庫(kù)、且非商業(yè)公司關(guān)聯(lián)的發(fā)行版。這里我們就選擇了 Arch Linux。
同時(shí),我們也不希望只是一群為 AUR 做貢獻(xiàn)人,因?yàn)樵?jīng)我自己的設(shè)想是這個(gè)團(tuán)體可以像 RedHat 那些發(fā)行版之類的 SIG,但是 SIG
的運(yùn)作模式是為官方倉(cāng)庫(kù)貢獻(xiàn)包。而 AUR 只是存儲(chǔ)一個(gè)腳本,并不是一個(gè)預(yù)先編譯好的包。這樣帶來(lái)的麻煩有很多,首先是 AUR
不能和官方倉(cāng)庫(kù)的包有沖突,但是這對(duì)于生物信息的目標(biāo)用戶群體是個(gè)麻煩事情,比如我要找 ??picard?
?,但是 ??community?
? 倉(cāng)庫(kù)里的 ??picard?
? 已經(jīng)是別的同名軟件了,但是它只是在 ??community?
? 倉(cāng)庫(kù)里,我不會(huì)用到它,因此我要幾經(jīng)周折地找到 AUR 里的 ??picard-tools?
?。AUR
另外一個(gè)不方便的點(diǎn)在于軟件包的來(lái)源不一定不被封鎖,曾經(jīng)我向我?guī)熃闶譄崆榈耐其N Arch 系的發(fā)行版,她也覺(jué)得蠻好用,但當(dāng)她想從 AUR
里下載軟件時(shí)候,互聯(lián)網(wǎng)限制了她的想象。但是,當(dāng)我們組成了一個(gè)有鏡像源的倉(cāng)庫(kù)的時(shí)候,我們就不需要擔(dān)心這個(gè)問(wèn)題了,來(lái)自互聯(lián)網(wǎng)封鎖國(guó)家的人們就無(wú)需忍受緩慢的互聯(lián)網(wǎng)速度和法律風(fēng)險(xiǎn)訪問(wèn)他們所需要的軟件了。
如何使用 BioArchLinux?
首先,BioArchLinux 本身的屬性決定了用戶可以在哪些地方使用它。 BioArchLinux 是一個(gè)生物工作者的 Arch Linux 社區(qū),包含了一個(gè)生物學(xué)軟件的 Arch Linux 存儲(chǔ)庫(kù)、可以編輯的 wiki 以及 Matrix 聊天頻道。
在 Arch Linux 中使用 BioArchLinux
正如它本身的屬性所定義,它可以用于 Arch Linux 及其衍生發(fā)行版(不包括 Manjaro stable & testing),從 BioArchLinux 安裝軟件很容易。只需幾個(gè)簡(jiǎn)單的命令即可安裝所需的軟件包。
在最初接觸 Linux 時(shí)候,我使用 Ubuntu 。當(dāng)我想要安裝生信軟件的時(shí)候,我曾經(jīng)一下午都在處理循環(huán)依賴的問(wèn)題。這或許是某些發(fā)行版的特性,而且由于我是圖形化安裝的,我其實(shí)對(duì)未來(lái)怎么遷移系統(tǒng)并沒(méi)有足夠的把握。對(duì)于小白來(lái)說(shuō),好不容易裝好的環(huán)境想要遷移很難避免重復(fù)性的工作。Arch Linux 的特性避免了這里很多問(wèn)題,從打包的粒度考慮,循環(huán)依賴可以說(shuō)是很罕見(jiàn)的了。另外就是當(dāng)你需要構(gòu)建一個(gè)包,你只需要會(huì)寫 Shell 腳本再看一看維基,事情會(huì)容易很多。相比于 Debian 等發(fā)行版,這樣其實(shí)會(huì)有利于你遷移你安裝的軟件。
當(dāng)然,和其他軟件倉(cāng)庫(kù)不同的是,BioArchLinux 倉(cāng)庫(kù)在可能的情況下,在每個(gè)包描述中提供了一個(gè) DOI。 這使用戶能夠輕松地了解有關(guān)每個(gè)包的用途和方法的更多信息,并在準(zhǔn)備出版物時(shí)快速識(shí)別適當(dāng)?shù)囊谩?/p>
在 WSL 中使用 BioArchLinux
另外,當(dāng) Windows 和 macOS 用戶需要使用 Linux 環(huán)境來(lái)運(yùn)行生物信息軟件的時(shí)候,也可以輕松使用 BioArchLinux。因?yàn)?BioArchLinux 同樣提供 WSL 以及 Docker 鏡像。
對(duì)于 Windows 用戶優(yōu)先推薦 WSL,因?yàn)?Docker 在 Windows 下依賴 WSL。只需要在任意一個(gè)鏡像站點(diǎn)的 ??wsl?
? 文件夾下找到 ??tar?
? 文件即可。解壓它,在安裝了 ??wsl?
? 的前提下雙擊 ??BioArch.exe?
? 文件,就可以開(kāi)始成功安裝,安裝好后鍵入下述命令即可進(jìn)入:
在使用前需要做一些初始化的任務(wù),比如初始化 WSL,這里的鏡像地址可以更改為你喜歡的鏡像,鏡像列表見(jiàn) ??mirrorlist 倉(cāng)庫(kù)?? 里的 ??mirrorlist.bio?
?。
此時(shí),你就可以使用該 WSL 了。
在 Docker 中使用 BioArchLinux
至于 Docker 的使用和 WSL 類似,只不過(guò)在安裝完 Docker 后使用如下命令進(jìn)入。進(jìn)入后依然需要使用 WSL 初始化的命令初始 Docker 容器。
BioArchLinux 如何運(yùn)作?
BioArchLinux 運(yùn)行流程
BioArchLinux 存儲(chǔ)庫(kù)由幾個(gè)開(kāi)源軟件包維護(hù)。 主要工具是一個(gè)名為 ??lilac?
? 的 python 應(yīng)用程序。
最基本的步驟是按照 Arch Linux 和 ??lilac.yaml?
? 的標(biāo)準(zhǔn)編寫腳本。我們編寫一個(gè) ??PKGBUILD?
? shell 腳本和一個(gè) YAML 文件(以及可選的 Python 腳本),并將它們放在 Git 存儲(chǔ)庫(kù)的一個(gè)文件夾中。
??nvchecker?
? 讀取 ??lilac.yaml?
?,獲取上游網(wǎng)站的信息,可以查看最新版本。如果 ??nvchecker?
? 無(wú)法從上游網(wǎng)站找到包版本,它會(huì)向管理員發(fā)送電子郵件報(bào)告問(wèn)題。
??nvchecker?
? 的信息發(fā)送給 ??lilac?
?,由 ??lilac?
? 判斷包是否需要升級(jí)。如果軟件包需要升級(jí),??lilac?
? 會(huì)將軟件包發(fā)送到 Arch Linux 打包工具 ??devtools?
?。
??devtools?
? 為軟件包提供了一個(gè)干凈的環(huán)境,只有 ??PKGBUILD?
? shell 腳本中的依賴項(xiàng)列表允許構(gòu)建。這可以避免在使用過(guò)程中丟失依賴項(xiàng)。如果包構(gòu)建失敗,則會(huì)自動(dòng)向包維護(hù)者發(fā)送警告電子郵件。如果包構(gòu)建成功,??archrepo2?
? 會(huì)將 Arch Linux 包放入特定路徑,并生成一個(gè)新的數(shù)據(jù)庫(kù)文件,形成一個(gè)全新的包倉(cāng)庫(kù)。如果 ??lilac.yaml?
? 中含有維護(hù) AUR 的指令,包更新也將退送給 AUR。
整個(gè)構(gòu)建過(guò)程被記錄為日志文件,可以使用 Rust 應(yīng)用程序 ??bioarchlinux-packages?
? 讀取,并顯示在日志網(wǎng)站上。
我們的維基網(wǎng)站是基于 MediaWiki 構(gòu)建的。所有人都可以自由地為本網(wǎng)站貢獻(xiàn)關(guān)于生物信息學(xué)軟件的使用以及生物信息學(xué)概念和術(shù)語(yǔ)。
BioArchLinux 展望
上面講了那么多的好,其實(shí) BioArchLinux 也有很多的不足。
先從倉(cāng)庫(kù)說(shuō)起,我們雖然在短短一年內(nèi)有了約 4.2 k 的軟件包,維護(hù)了約 4.7% AUR 包,但是,我們相比于 Debian Med 以及 bioconda 都有很大的數(shù)量上的差距,急需更多的維護(hù)者參與進(jìn)來(lái),并且需要不斷提升打包的質(zhì)量。
除此之外,比較急切的是我們國(guó)內(nèi)鏡像源目前僅僅有幾家高校,南京大學(xué)、西安交通大學(xué)、山東大學(xué)以及南京郵電大學(xué),我們希望更多的鏡像站能夠添加我們。另外因?yàn)橛?jì)算機(jī)資源的問(wèn)題,我們也沒(méi)有 archive 網(wǎng)站,這給回滾造成了一定程度的困難。
其余就是擴(kuò)大倉(cāng)庫(kù)的受眾和加強(qiáng)社區(qū)的維護(hù)。雖然我們有了 WSL 還有 Dokcer,但是有些人很喜歡在虛擬機(jī)里運(yùn)行,我們卻提供不了 ISO 文件,也需要相關(guān)的維護(hù)人員。我們也沒(méi)有專門的維基管理人員,有段時(shí)間因?yàn)闆](méi)有限制用戶注冊(cè),網(wǎng)站有被垃圾信息灌爆。
甚至我們?cè)诰W(wǎng)站的搭建上面還是有欠缺,比如沒(méi)有像 Arch Linux 那樣的搜包界面,這需要更多開(kāi)發(fā)人員的參與。除此之外,如何以非 root 用戶的角色使用倉(cāng)庫(kù)仍然是一個(gè)很大的課題。
我們十分歡迎更多的人參與到我們的社區(qū)中來(lái),一起做一些瘋狂且美好的事情,不管再多困難,我相信,這個(gè)那么 FFF(community friendly, user friendly, earth friendly)的項(xiàng)目會(huì)長(zhǎng)命百歲。(注:community friendly 幫助維護(hù) Arch Linux community 的 AUR 軟件包;user friendly 易于使用、以用戶為中心;earth friendly 減少大家編譯的次數(shù),盡可能減少計(jì)算機(jī)資源的消耗。)
致謝
非常感謝 xTom、Mick Elliot 以及 Bipin Kumar 對(duì)這個(gè)項(xiàng)目的資助,也十分感謝一起為倉(cāng)庫(kù)工作的所有 BioArchLinux 成員。另外特別感謝 Arch Linux CN 依云 以及 imlonghao,沒(méi)了他們維護(hù)的軟件,BioArchLinux 不可能那么順利的運(yùn)作。同時(shí)也感謝南京大學(xué)、西安交通大學(xué)、山東大學(xué)以及南京郵電大學(xué)和其他為 BioArchLinux 提供鏡像的機(jī)構(gòu)和個(gè)人。最后,感謝之前 Bioinformatics Open Source Conference(BOSC)為參會(huì)免除會(huì)議費(fèi)用。