BioArchLinux: Arch Linux 生物信息社區
為什麼會有 BioArchLinux 項目?
以目前科學相關的發行版為例,它們大多基於 Ubuntu ,比如 Bio-Linux 以及 Poseidon Linux ;也有基於 CentOS 或者 RHEL 的,比如 Scientific Linux 。但是最終這些發行版都慢慢不再活躍,Scientific Linux 發出的各種 公告 也是表現出身不由己。
從 Scientific Linux 的經歷可以看出,如果將各種軟體包打包在一個依賴商業公司或者由商業公司主導的發行版上,發展方向就會變得不可知,最初的目標和規劃自然不能得以實現。最初 Scientific Linux 依賴付費的 Linux 發行版 RHEL ,後期依賴商業公司的免費社群發行版 CentOS(CentOS 8 以及之前是一個穩定的發行版),紅帽將 CentOS 8 的生命周期草草結束,進而支持滾動發行版 CentOS Stream(現在是 RHEL 的上游發行版),因此 Scientific Linux 不得不變成基於 CentOS Stream 的發行版。只能說,Scientific Linux 一開始就選擇錯了。
再從 Bio-Linux 的角度來看待,Bio-Linux 本質上是把各類軟體包打包到 Ubuntu 內之後形成的一個發行版。這必然有一個周期,在這個一年或者兩年的周期內,各類軟體總會有更新的,而 Bio-Linux 不考慮這個問題,所以會出現使用過時的版本來分析數據的情況,很明顯這不利於研究。而且, Bio-Linux 8 自 2014 年發布了基於 Ubuntu 14.04 LTS 的發行版之後,就沒在發行新的版本了,而目前 Ubuntu 22.04 LTS 都已經出來了。Bio-Linux 的 軟體包 除了老舊,還特別冗雜,我需要的包他們不全有,我不需要的包他們有很多,這毫無疑問增加了我 PC 的負擔。
Poseidon Linux 也有著類似的問題。這種發布發行版的方式滯後且需要重裝系統,特別不方便。實在不如直接經營一個各類包的倉庫,可以快速更新,不必頻繁發布 ISO 文件又可以將軟體更新到最新版。
所以,如果你希望想長期使用,那麼就建議使用非商業公司關聯的 Linux 系統;如果你需要參與 Linux 的發展,那麼你就要尋找一個方便使用第三方倉庫/官方倉庫、且非商業公司關聯的發行版。這裡我們就選擇了 Arch Linux。
同時,我們也不希望只是一群為 AUR 做貢獻人,因為曾經我自己的設想是這個團體可以像 RedHat 那些發行版之類的 SIG,但是 SIG 的運作模式是為官方倉庫貢獻包。而 AUR 只是存儲一個腳本,並不是一個預先編譯好的包。這樣帶來的麻煩有很多,首先是 AUR 不能和官方倉庫的包有衝突,但是這對於生物信息的目標用戶群體是個麻煩事情,比如我要找 picard
,但是 community
倉庫里的 picard
已經是別的同名軟體了,但是它只是在 community
倉庫里,我不會用到它,因此我要幾經周折地找到 AUR 里的 picard-tools
。AUR 另外一個不方便的點在於軟體包的來源不一定不被封鎖,曾經我向我師姐十分熱情的推銷 Arch 系的發行版,她也覺得蠻好用,但當她想從 AUR 里下載軟體時候,互聯網限制了她的想像。但是,當我們組成了一個有鏡像源的倉庫的時候,我們就不需要擔心這個問題了,來自互聯網封鎖國家的人們就無需忍受緩慢的互聯網速度和法律風險訪問他們所需要的軟體了。
如何使用 BioArchLinux?
首先,BioArchLinux 本身的屬性決定了用戶可以在哪些地方使用它。 BioArchLinux 是一個生物工作者的 Arch Linux 社區,包含了一個生物學軟體的 Arch Linux 存儲庫、可以編輯的 wiki 以及 Matrix 聊天頻道。
在 Arch Linux 中使用 BioArchLinux
正如它本身的屬性所定義,它可以用於 Arch Linux 及其衍生髮行版(不包括 Manjaro stable & testing),從 BioArchLinux 安裝軟體很容易。只需幾個簡單的命令即可安裝所需的軟體包。
# echo -e "[bioarchlinux]nServer = https://repo.bioarchlinux.org/$arch" >> /etc/pacman.conf
# pacman-key --recv-keys B1F96021DB62254D
# pacman-key --finger B1F96021DB62254D
# pacman-key --lsign-key B1F96021DB62254D
# pacman -Syy
# pacman -S pkg_name
在最初接觸 Linux 時候,我使用 Ubuntu 。當我想要安裝生信軟體的時候,我曾經一下午都在處理循環依賴的問題。這或許是某些發行版的特性,而且由於我是圖形化安裝的,我其實對未來怎麼遷移系統並沒有足夠的把握。對於小白來說,好不容易裝好的環境想要遷移很難避免重複性的工作。Arch Linux 的特性避免了這裡很多問題,從打包的粒度考慮,循環依賴可以說是很罕見的了。另外就是當你需要構建一個包,你只需要會寫 Shell 腳本再看一看維基,事情會容易很多。相比於 Debian 等發行版,這樣其實會有利於你遷移你安裝的軟體。
當然,和其他軟體倉庫不同的是,BioArchLinux 倉庫在可能的情況下,在每個包描述中提供了一個 DOI。 這使用戶能夠輕鬆地了解有關每個包的用途和方法的更多信息,並在準備出版物時快速識別適當的引用。
$ pacman -Ss doi_number
$ pacman -Qi pkg_name
在 WSL 中使用 BioArchLinux
另外,當 Windows 和 macOS 用戶需要使用 Linux 環境來運行生物信息軟體的時候,也可以輕鬆使用 BioArchLinux。因為 BioArchLinux 同樣提供 WSL 以及 Docker 鏡像。
對於 Windows 用戶優先推薦 WSL,因為 Docker 在 Windows 下依賴 WSL。只需要在任意一個鏡像站點的 wsl
文件夾下找到 tar
文件即可。解壓它,在安裝了 wsl
的前提下雙擊 BioArch.exe
文件,就可以開始成功安裝,安裝好後鍵入下述命令即可進入:
wsl -d BioArch
在使用前需要做一些初始化的任務,比如初始化 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 容器。
# docker pull bioarchlinux/bioarchlinux
# docker run -it --privileged --name container_name --restart=always bioarchlinux/bioarchlinux /bin/bash
BioArchLinux 如何運作?
BioArchLinux 存儲庫由幾個開源軟體包維護。 主要工具是一個名為 lilac
的 python 應用程序。
最基本的步驟是按照 Arch Linux 和 lilac.yaml
的標準編寫腳本。我們編寫一個 PKGBUILD
shell 腳本和一個 YAML 文件(以及可選的 Python 腳本),並將它們放在 Git 存儲庫的一個文件夾中。
nvchecker
讀取 lilac.yaml
,獲取上游網站的信息,可以查看最新版本。如果 nvchecker
無法從上游網站找到包版本,它會向管理員發送電子郵件報告問題。
nvchecker
的信息發送給 lilac
,由 lilac
判斷包是否需要升級。如果軟體包需要升級,lilac
會將軟體包發送到 Arch Linux 打包工具 devtools
。
devtools
為軟體包提供了一個乾淨的環境,只有 PKGBUILD
shell 腳本中的依賴項列表允許構建。這可以避免在使用過程中丟失依賴項。如果包構建失敗,則會自動向包維護者發送警告電子郵件。如果包構建成功,archrepo2
會將 Arch Linux 包放入特定路徑,並生成一個新的資料庫文件,形成一個全新的包倉庫。如果 lilac.yaml
中含有維護 AUR 的指令,包更新也將退送給 AUR。
整個構建過程被記錄為日誌文件,可以使用 Rust 應用程序 bioarchlinux-packages
讀取,並顯示在日誌網站上。
我們的維基網站是基於 MediaWiki 構建的。所有人都可以自由地為本網站貢獻關於生物信息學軟體的使用以及生物信息學概念和術語。
BioArchLinux 展望
上面講了那麼多的好,其實 BioArchLinux 也有很多的不足。
先從倉庫說起,我們雖然在短短一年內有了約 4.2 k 的軟體包,維護了約 4.7% AUR 包,但是,我們相比於 Debian Med 以及 bioconda 都有很大的數量上的差距,急需更多的維護者參與進來,並且需要不斷提升打包的質量。
除此之外,比較急切的是我們國內鏡像源目前僅僅有幾家高校,南京大學、西安交通大學、山東大學以及南京郵電大學,我們希望更多的鏡像站能夠添加我們。另外因為計算機資源的問題,我們也沒有 archive 網站,這給回滾造成了一定程度的困難。
其餘就是擴大倉庫的受眾和加強社區的維護。雖然我們有了 WSL 還有 Dokcer,但是有些人很喜歡在虛擬機里運行,我們卻提供不了 ISO 文件,也需要相關的維護人員。我們也沒有專門的維基管理人員,有段時間因為沒有限制用戶註冊,網站有被垃圾信息灌爆。
甚至我們在網站的搭建上面還是有欠缺,比如沒有像 Arch Linux 那樣的搜包界面,這需要更多開發人員的參與。除此之外,如何以非 root 用戶的角色使用倉庫仍然是一個很大的課題。
我們十分歡迎更多的人參與到我們的社區中來,一起做一些瘋狂且美好的事情,不管再多困難,我相信,這個那麼 FFF(community friendly, user friendly, earth friendly)的項目會長命百歲。(註:community friendly 幫助維護 Arch Linux community 的 AUR 軟體包;user friendly 易於使用、以用戶為中心;earth friendly 減少大家編譯的次數,儘可能減少計算機資源的消耗。)
致謝
非常感謝 xTom、Mick Elliot 以及 Bipin Kumar 對這個項目的資助,也十分感謝一起為倉庫工作的所有 BioArchLinux 成員。另外特別感謝 Arch Linux CN 依雲 以及 imlonghao,沒了他們維護的軟體,BioArchLinux 不可能那麼順利的運作。同時也感謝南京大學、西安交通大學、山東大學以及南京郵電大學和其他為 BioArchLinux 提供鏡像的機構和個人。最後,感謝之前 Bioinformatics Open Source Conference(BOSC)為參會免除會議費用。
作者簡介:
MRes Evolutionary Biology, International Society for Computational Biology 會員
本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive