建议学生物的你使用的操作系统

如果你准备进入你生物专业的学习或者你已经进入了生物专业的学习,装配你的首要生产力工具PC是头等大事,而PC的操作系统选择则是你的首要抉择。本文将讲述为什么推荐学生物的你使用Linux系统而不是Windows,并且讲述了推荐你使用ArchLinux及其衍生版的理由。

Windows

2021年3月14号的时候我写了一条动态

如果有一个轻量好用并且兼容性好的系统,我立马放弃Windows,这里我在被强制提醒版本将很快不被支持,并且还因为没有安装过的VirtualBox不能更新,只能重新装系统,改网络设置才能登陆微软账户,然后网速还得很慢才能快,你刚更新好慢得啥都下不了,软件没法备份一律重装。

原因是Windows提醒我更新并且宣称很快结束这个版本的支持,于是我遇见了更新bug,之后我重装Windows装了3天,实在是让我觉得非常不方便。而且原本宣称Windows10是最后一个Windows版本的微软,现在也将于2025年停止支持。

这样的承诺让人十分没有安全感,也大概是我开始尝试开源系统的原因,而Linux几乎是PC开源系统的唯一选择。

另外一点是次要原因,如果我每次做数据分析前都需要到软件的官网看一看软件有没有更新,这是一个很麻烦的事情,如果你不去看,可能你的工作就会白做。因为如果版本更新过大则会影响你的结果;如果小版本的软件更新,虽然不太影响你的分析结果,但是会引来审稿人的责难。

所以一个能自动或者手动将软件版本更新到最新版本的Linux发行版将会是一个很好的日用选择。

Linux

而Linux发行版特别多,适合用于日常使用的系统也很多,挑选需要一定的时间,但是要首先评估使用的潜在风险和上手难易程度。

补充一点点小前提内容。目前使用的大部分发行版主要基于几个发行版。Debian系的Debian、Ubuntu和Deepin,RedHat的Fedora、CentOS和RHEL,Arch系的ArchLinux、ArcoLinux、AtrixLinux和Manjaro,SUSE系(这里因为OpenSUSE较为独立,故不视为RedHat系)的OpenSUSE和SUSE Linux Enterprise Server。其余比较特别的就是Gentoo一支,较Arch系更为自由。分类方法基于LinuxTimeline

科学发行版的启示

以目前关乎科学的发行版为例,它们大多基于Ubuntu,比如Bio-Linux以及Poseidon Linux;也有基于CentOS或者RHEL的,比如Scientific Linux。但是最终这些发行版都慢慢不再活跃,Scientific Linux发出的各种公告也是表现出身不由己。

从Scientific Linux的经历可以看出,如果将各种软件包打包在一个依赖商业公司或者由商业公司主导的发行版,发展方向就回变得不可知,最初的目标和规划自然不能得以实现。最初Scientific Linux依赖付费Linux发行版RHEL,后期依赖商业公司的免费社群发行版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 20.04 LTS都已经出来了 。软件包除了老旧的问题,还特别冗杂,对于系统发育来说,我需要的包他们不全有,我不需要的包他们有很多,这毫无疑问增加了我PC的负担。Poseidon Linux也有着类似的问题。这种发布发行版的方式滞后且需要重装系统,特别不方便。实在不如直接经营一个各类包的仓库,可以快速更新,不必频繁发布iso文件又可以将软件更新到最新版。

所以,如果你希望想长期使用,那么就建议使用非商业公司关联的Linux系统;如果你需要参与Linux的发展,那么你就要寻找一个方便使用第三方仓库/官方仓库且非商业公司关联的发行版,这点将在下文阐述。

包和包管理器

如果你不使用定制版的Ubuntu或者RHEL抑或CentOS,而是直接使用Ubuntu/RHEL抑或Debian/CentOS(或者是最近的Rock Linux),你也会遇见特别多的问题。比如无法通过包管理器(比如apt, rpm, yum)直接安装,必须手动,一万个人心中有一万个哈姆雷特,一万个软件可能有一万个安装方式,我重装一次就要重复特别复杂的命令,这显然不太合适,所以我的期待是 一万个人心中只有一个美猴王, 一万个软件可以通过一种方式安装。

为了直观比较,将Debian系、RedHat系、SUSE系、Arch系和Slackware系代表的发行版中各个包的信息列出来,来比较一下。并且将我专业内相关的软件包和常用软件分别列出来,来表达两个维度的易用程度。表1是各个发行版对生物系统发育、生物统计等专业软件的支持情况。

表1. Linux发行版内生物专业部分Linux软件的版本状况。空白则为软件在该发行版中缺失。软件均考虑第三方仓库以及官方仓库。对于Arch,考虑官方的packages以及AUR并不考虑基于Arch其他发行版的仓库。数据的来源时间为2021年6月19日15:30至23:30。

软件/发行版Debian unstableDebian testingDebian stableOpenSUSE TumbleweedFedora 34ArchSlackware
MAFFT7.4757.4757.4077.2737.4817.453
ClustalW2.12.12.12.12.12.1
muscle3.8.1551 (latest)3.8.1551 (latest)3.8.1551 (latest)3.8.313.8.313.8.1551 (latest)3.8.1551 (latest)
Gblcoks0.91b
jmodeltest2.1.102.1.102.1.102.1.10
modeltest3.6-3.1
modeltest-ng0.1.7
mrmodeltest2.1.4
mrbayes3.2.7a3.2.7a3.2.63.2.7a3.2.7a
mrbayes-mpi3.2.7a3.2.7a3.2.63.2.7a
paup*4.0a168
raxml8.2.128.2.128.2.128.2.12
raxml-ng1.0.2
FastTree2.1.112.1.112.1.102.1.11
phyml2020062120200621201806212012041220200621
BEAST1.10.41.10.41.10.41.10.4
BEAST22.6.32.6.32.5.12.6.4
iqtree1.6.121.6.121.6.92.1.2
phylobayes4.1e
phylobayes-mpi1.8c
figtree1.4.41.4.41.4.41.4.4
treeviewx0.5.10.5.10.5.10.5.1
tracer1.7.1
seqencematrix1.8.2
phylip3.6973.6973.6973.6973.698
ugene34.034.034.038.133.0
seaview5.0.45.0.44.7.15.05.0.45.0
MEGA10.2.6
mesquite3.6.2
paml4.9j4.9j4.9h4.9h
pamlX1.3.1
bali-phy3.6.03.6.03.6.0
phylonium1.31.3
popart1.7
MorphoJ1.07a
Open DELTA1.0.2
QGIS3.10.143.10.142.18.283.18.33.18.03.18.32.10.1
RStudio1.4.11061.4.17171.4.1717
python3.9.23.9.23.7.33.8.103.9.53.9.53.9.5

从表1的信息来看,简单来说就是OpenSUSE、Fedora以及Slackware支持的软件较少;Debian的testing和unstable分支基本上一致(unstable → testing → stable),如果追求稳定性可以testing分支,如果追求新则可以unstable分支,stable分支十分不建议使用,总体来说Debian在常用软件的支持上欠佳,Arch则是包最多且对常用生物软件支持较好的一个发行版。

表2. Linux发行版内日常使用Linux软件的版本状况。空白则为软件在该发行版中缺失。包含仓库和数据采集时间与表1相同。

软件/发行版Debian unstableDebian testingDebian stableOpenSUSE TumbleweedFedora 34ArchSlackware
Microsoft Edge7.481
Google Chrome91.0.4472.11491.0.4472.11491.0.4472.77
Firefox88.0.189.0.187.089.0.1
Chromium90.0.4430.21290.0.4430.21288.0.4324.18291.0.4472.10189.0.4389.9091.0.4472.11491.0.4472.101
Geary38.238.112.440.040.040.0
Evolution3.38.33.38.33.30.53.40.23.40.03.40.2
Thunderbird78.11.078.11.078.6.078.11.078.11.078.11.0
WPS11.1.0.1016110.1.0.5672
Yozo-Office8.0.1331.101
Libreoffice7.0.4/–7.0.4/–6.1.5/–--/7.1.3--/7.1.27.0.6/7.1.4--/7.1.4
visual code studio1.57.11.44.2
Atom1.57.01.57.0
zotero5.0.96.25.0.85
mendeley1.19.41.19.81.17.9
jabref3.8.23.8.23.8.25.22.9.2
teams1.4.00.136531.3.00.25560
zoom5.6.73.5.352596.0119
slack0.15.20.15.20.15.24.14.02.6.3
telegram2.7.12.7.42.0.1
notion4.0.24.0.23.20170505013.20190501014.0.24.0.0
joplin2.0.111.8.5
obsidian0.12.4
trilium0.47.4
feedreader2.10.02.10.02.7.12.11.02.11.0
RSSOwl2.8.02.2.1
fluent reader1.0.1
Raven1.0.57
QuiteRSS0.19.40.19.40.18.120.19.40.19.40.19.4
smplayer20.6.020.6.018.10.021.1.021.1.021.1.021.1.0
VLC3.0.123.0.123.0.123.0.133.0.123.0.153.0.12
MPV Player0.32.00.32.00.29.10.33.10.33.10.33.10.32.0
Audacious4.0.54.0.53.10.14.14.14.14.1
Rhythmbox3.4.43.4.43.4.33.4.43.4.43.4.43.2.1
Clementine1.4.01.4.01.3.11.3.991.4.01.4.01.4.0
GIMP2.10.222.10.222.10.82.10.242.10.242.10.242.10.24
shotcut21.01.2921.01.2919.06.1521.05.1821.03.2121.05.1818.11.18
wine5.0.35.0.34.06.116.36.116.1

可以从表2看出,Slackware除了在邮件、笔记以及RSS阅读器方面支持不是很好,版本支持忽高忽低,是除了Arch以外最好的;Fedora在邮件以及浏览器支持略好,但次于Debian;跟专业软件一样,Debian的各个软件,版本往往不是太新,在RSS阅读器、笔记、文献管理软件、文本编辑器方面支持不好,一样建议使用testing或者unstable作为主力使用;OpenSUSE的软件支持完全不够日常使用,支持是几个发行版中最差的;ArchLinux的软件支持依然最好,且版本最新。

当然这只是通过发行版自带的包管理器可安装的软件和版本,当然你可以通过各类命令安装不同版本的各种软件,但是那样包管理器又有什么用呢?

当我还是个刚接触Linux的小白时,曾在Ubuntu中安装不可以通过apt直接安装的软件,结果循环依赖,当我想尝试使用aptitude安装解决循环依赖时,安装aptitude的时候也存在循环依赖,我将自己PC装成双系统的第一个下午,我感受了无比的挫败感以及很低的效率。当时觉得是Ubuntu是个很入门的发行版,可以很容易地搜索到教程,但是到最后发现就算看了教程,一步一步跟着做下去,自己并没有什么收获,纯粹增加了几行笔记,因为你无法理解,或者是杂乱的依赖无法让人理解。

而如果你使用ArchLinux就不会存在依赖混乱、循环依赖等问题,pacman以及yay等AUR helper可以轻松解决这些问题,只需要一行命令就能轻松从丰富的AUR或者官方packages中安装你想要的包。并且可以在ArchWiki中轻松理解每一步的命令,不用看各类教程。

AUR

至于表1和表2中ArchLinux的优异表现是有原因,ArchLinux是个和Debian一样社区驱动的Linux发行版,不过不同的是ArchLinux的用户会有更高的参与度和自由度,可以上传自己写好的PKGBUILD上传到AUR(Arch User Repository),方便别的用户一条简短的命令行来安装使用。

而在表1和表2较Arch次之的Debian则很难做到如此,因为称为Debian Developer或者Debian Maintainer不是那么容易,需要一些繁琐的步骤,有点类似于Arch的Trusted Users,但是Arch每个注册用户都可以维护AUR。而且书写PKGBUILD只需要掌握一些很简单的AUR命令,而且ArchLinux Forum的大部分人大都会在AUR板块提出建设性意见帮助你。

这十分有利于团队建立起一个对生物抑或其他学科有利的发行版。不需要你各种申请也不需要你各种发行iso就可以做到让研究变得容易,同时,ArchLinux是一个社区驱动的Linux滚动发行版,只需要安装一次,不必经历类似于 Ubuntu 18.04 LTS 到 Ubuntu 20.04 LTS 的重复工作,也不要担心今后各种商业公司的决策,因为这是个社区驱动的项目。这大概也是我选择ArchLinux的原因,截至2021年6月20日,我已经是48个AUR包的maintainer并且是一个AUR包的co-maintainer。

ArchLinux

哲学

ArchLinux的创建遵循这KISS(Keep It Simple & Stupid),所以ArchLinux本身是空白的,它需要你一点点安装各种你需要的包,它本身并不会为你的系统预装什么。这似乎并不是多么傻瓜式的做事方式,但是因为你亲自配置了你的系统,你自然也会很熟悉各种配置,出问题的时候修复特别简单。

这点是略有体会,前几天因为电池充不上电被客服要求更改BIOS,结果改过去改回来,电池能用了,结果开机直接进入grub rescue,就自己通过安装时配置的路径把电脑rescue回来了(比grub rescue还rescue)。

ArchLinux衍生发行版

尽管ArchLinux是如此强大、可靠且易用,不过非常不幸的是,ArchLinux本身或许并不适合一个Linux新手。这点可以从用户量上看出这一点,截至2021年6月20日,AUR页面注册的用户有8.5万人,BBS页面注册的用户有10.68万人,综合考虑,可能用户数量在10万左右,而仅仅AskUbuntu的用户就有97.86万,大约9倍于ArchLinux。尽管如此,ArchLinux并不考虑将用户群体变得很大,所以至今都是全命令行安装(为了KISS),虽然有一些自动安装的程序,但是并不好用,并且也是需要命令行操作的。如果想要操作,请参照ArchWiki的Installation guide

因此,我十分推荐新接触Linux的用户先从ArchLinux的衍生版开始。而一个拥有着图形化安装界面的发行版无疑是不错的选择。

EndeavourOS

EndeavourOS可谓是接近ArchLinux的衍生版,而这也正式他们的目标。根据官网透露,离线安装版本只提供Xfce桌面环境,而在线安装版本提供目前主流的桌面环境,并且安装尽量少的预装软件。

ArcoLinux

ArcoLinux提供很多桌面环境或者非桌面环境选择,并且镜像源是与ArchLinux完全相同,除了图形化安装界面和自带的各类桌面环境以及预装的若干软件,几乎没有任何区别,但是跟EndeavourOS相比,它还多提供一个自己的仓库。ArcoLinux官网还给出了如何通过Arco熟练掌握安装技巧,进而达到可以安装ArchLinux的阶段过程

Manjaro

Manjaro有着自己的仓库,并且更新步伐也不与ArchLinux一致,比ArchLinux慢一点。这有可能会导致AUR与系统不配套导致的报错;当然这也一定程度的提高了系统的稳定性(是ArchLinux的下游系统),不过之前在wine更新出bug的时候,Manjaro并没有及时处理。值得关注的是Manjaro不过提供图形化的安装界面还提供图形化的包安装和管理(pamac),这毫无疑问提高了易用度,不过对于新手熟悉命令行不是一件好事情。其他发行版的用户也可以通过安装AUR里的pamac-aur包来安装pamac和图形化的包管理界面。在桌面环境上,Manjaro提供Xfce、KDE以及Gnome三种桌面,社区提供了更多桌面选择。

贡献

当你安装好并且使用了ArchLinux或者其衍生版,你便可以轻松开始工作。

如果你希望为社区做一些贡献,你可以

  • 在ArchLinux Forum回帖帮助有需要的人,或者发帖来了解社区。
  • 帮助完善ArchWiki
  • 加入IRC或者邮件列表来交流
  • 分享美化的壁纸、主题等
  • 报告安装的软件
  • 修正或者报告bug
  • 报告安全漏洞
  • 帮助测试packages
  • 创建、维护AUR的packages
  • 成为Trusted User

或许有空会写写如何编写、维护AUR的packages。