六年 Linux 之旅带来了什么?

作为一名 CS 专业的本科学生,不经意间 Linux 进入我的工作学习生活已经有六年。在本文中我将简单的小记这六年来我与 Linux 相关的经历与收获,希望本文可以帮助到一些初识 Linux 的小伙伴们。我将会详细讲述我所使用过 Linux 发行版对我个人来说各有什么便宜之处,经过了它们的洗礼我有哪些感想和收获。它们(按字母排序)分别是:

  • ArchLinux
  • Debian
  • FreeBSD
  • Fedora
  • Gentoo
  • KDE Neon
  • Ubuntu Kylin

我只打算讲讲这些我曾经作为桌面操作系统长期使用的发行版,而不包含我在服务器上使用的那些发行版,如:RHEL、CentOS 等。这个表单里有一个不合群的家伙 – FreeBSD,它并不是一个 Linux 发行版,而是类 Unix。我之所以想写写它的原因将会在后文中讲述。

注意:本文内容较长,如果你时间有限,可以直接翻至文章末尾,我会有一个形如总结的片段。

一切的开始 – 初识 Linux

颇有些奇怪的是,我对第一次接触与使用 Linux 记忆犹新。我第一次安装使用的 Linux 版是一个大家耳熟的中国本土化发行版 – deepin,可能是它当时给我带来的惊艳感觉让我至今仍然记忆深刻。彼时,我是一名普通的高中生,当时主要的开发工作是使用 C 进行一些机器人硬件编程。一次偶然的机会,我看到了 deepin 的宣传文稿并下载了 deepin 2013 进行了安装体验。那时我的设备性能现在看来是十分孱弱的:

  • 奔腾平台标压 U
  • 4GB RAM
  • 忘记具体规格的 HDD 一块
  • 集成显卡

显而易见,由于彼时 DDE 刚刚诞生不久,优化和响应只能称的上合格(更大可能是我的设备过于孱弱,但其实也能体现当时家庭计算机的性能表现了),所以长期的使用体验可以说是有些糟糕了。尽管当时那种新颖的感觉和 deepin 别致的设计确实吸引到了我,但是在短暂的使用之后,我选择卸载了它,装回了 Windows 7。但是我并没有离 Linux 远去,我在 deepin 短暂的半月/一月使用时间第一次了解到了两点:

  1. 原来并不是所有的操作系统都是闭源收费的(没错就是说你,Windows)。
  2. 原来桌面环境并不是死板前篇一律的,也是可以花里胡哨的。

尽管我之后并没有再使用过 deepin,但仍然感谢它将我带入了 Linux 的世界中。题外话: deepin 现在已经十分不错,会是中文用户不错的一个选择。

初入大学校门 – 开始学习与使用 Linux

在初识 Linux 之后,由于高考的缘故我并没用太多使用电脑的机会,也就没有再有后话。直到升入大学后的第一门课 – C 语言程序设计(这是我本科成绩最好的一门课,出道即巅峰),由于当时我已经从事了两年的 C 语言的浅显开发, C 语言课堂对我唯一的吸引就是听老师吹水(逃)。在任课老师开课不久的一次传教中,我悄无声息的用上了 Emacs,颇有些病态的学了 LaTex (当时需要提交的所有文档都是 doc)。那么面临的一个问题是如何获取到最好的 Emacs 和 LaTex 体验,答案自然不用多说自然是在 GNU/Linux 中使用它哥俩。

当时我并不是一个富有经验的用户,我选择了使用 Ubuntu Kylin 16.04 LTS – 另一个中国本土 Linux 发行版(这其实也是学校内一部分老师的选择,我不确定自己是否受此影响)。通过名字显而易见的 Ubuntu Kylin 是一个 Ubuntu Base 的发行版,提供一些默认更适合中文的设置。我在上面安装了 Emacs 与 texlive-base,那段时间真是一段不错的体验。当时我的设备性能依旧孱弱,它是一台 Dell Chromebook11:

  • 赛扬平台低压 U
  • 4GB RAM
  • 16GB SSD
  • 集成显卡

这台机器给我带来的收获很大,我通过它与 Ubuntu Kylin 学会了 Linux C/C++ 工具链的使用,开始了 Emacs 人生。而机器本身无法拓展的极小存储和 Ubuntu Kylin 提供的大量默认中文软件(像 WPS office 一类)让我废了不少功夫之后学会了如何管理 Linux,规划自己的存储,不得不说我认为这是误打误撞的一个不错开始。

由于安装的是一个 Long-term support 版本,借力于 Ubuntu/Debian 丰富的仓库软件, Ubuntu Kylin 在我的机器上表现相当不错,我认为它是电脑浅使用者和中文 Linux 初学者的一个不错的选择,软件丰富而不失稳定,又有合适的中文本土化。之后我在父母使用的一台陈旧的电脑上安装了 Ubuntu Kylin 16.04 LTS ,至今看起来仍然工作的不错。

我使用 Ubuntu Kylin 也有所收获,我学会了如何管理和配置 Debian 系的系统,了解了一些开源社区的文化,开始使用 git,学会了 shell 编程和 python。我在 Ubuntu Kylin 上写出自己的第一个脚本和爬虫。 我对 Ubuntu Kylin 评价是: Linux 中文用户起始的一个优秀选择,它可以在性能一般的机器上良好的工作,附带有 Ubuntu 软件仓库大量的软件可供选择。你可以选择使用 deb 包去安装一些不被官方仓库收录的软件。

新想法的实践 – 策略激进的 Linux 选择

在快一年的 Ubuntu Kylin 使用之后,我面临一个问题,Ubuntu Kylin LTS 这类追求软件稳定的发行版不能满足我的一些需求,我想尝试最新的一些软件和最新的内核特性。几个作为代表的需求就是 Emacs 25(当时官方仓库只有 v24.3,而我还不会手动编译) 以及 BBR TCP 拥塞控制算法(这是在 Kernel v4.9 + 提供的,当时我也并不会替换内核)。这时我需要一个更新策略更为激进的 Linux 发行版,又了解到 Linus 日常使用 Fedora ,于是风风火火的安装了 Fedora 24 。Fedora 是一个更新频率更高(半年一次 release)的发行版,你能预期到的新特性都能在 Fedora 上得到体验。并且 Fedora 是为数不多提供多个桌面环境(DE)默认配置支持的发行版,并不像 KUbuntu 、 LUbuntu 等那样会把你搞到头晕,你可以在 Fedora skin 找寻到所有 Fedora 社区维护的不同 DE 的安装镜像。

这时,我从 Unity 桌面转向了使用 KDE,至今我仍认为 KDE5 是最为成熟华丽的桌面环境,奇怪的是国内用 KDE 的人并不多,大家好像普遍认为不够易用(我完全不知道哪里不易用)。Fedora 使用 rpm 包管理软件,使用 dnf 处理依赖, dnf 可能是第三好用的软件包管理引擎,他使用第二好用的 zypper 的后端 libslov 提升了依赖计算效率。如果你使用过 yum 你就会发现 Fedora 作为一个 Redhat 的发行版居然挺好用的,这其中自然有 dnf 的功劳。有一点很好玩,dnf 与某网游同名,那时在宿舍里每天总是有两个人打着 dnf 。

尽管 Fedora 已经满足了我的要求,也让我知道了为什么是最易于安装的(这话 Linus 说的),但我使用过的 Fedora 最终版本号还是停留在了 Fedora25 。这其中的原因有点尴尬,当时我在学习 Scheme ,我使用 guile 作为 REPL ,我偷懒使用了仓库里的 guile ,在键入形如 sudo dnf install guile 之后, dnf 自动安装了 guile1.8 ,在我想使用 guile 2.0 替换时诡异的是依赖链断了, dnf 甚至提示我要卸载掉 kernel ,于是我放弃了使用 guile 作为 REPL 转而使用 chez。就像压死骆驼的最后一根草,击溃我持续使用 Fedora 打算的最后一击发生在更新 Fedora26 时,这事实上是大多数周期更新发行版的一个普遍问题,当我 system-upgrade 时,我有接近 5000 个包需要重新安装。尽管 Fedora 运行在我的一台性能还可以的新设备上,这仍然让我觉得浪费时间。我的设备配置大概是这样:

  • i7-6700HQ
  • 16GB RAM
  • 0.5 TB SSD + 0.5TB HDD

有点好玩的一点是,现在看来我之后在别的发行版上好像浪费的时间远远多一些。我在 Fedora 上学会了裁剪编译内核,同时日常使用 rpm 也大大帮助到了我管理当时手头的几台服务器。目前的我认为, Fedora 实至名归是 Linux 内核学习者迈出第一步的最好选择,当然也是 RHEL/CentOS 管理员个人电脑的不二选择。

在这之后,由于参与了一些 CTF 比赛,我需要安装大量的安全审计工具,我选择了 Kali Linux ,这是一个设计理念对普通用户而言略有畸形的发行版,由于只用了几个月,所以我只是简单的提一嘴,不会推荐它作为日常使用的选择。

前文我提到 Fedora 是比较激进的,可能会有不少的 ArchLinux 用户嗤之以鼻。事实上,在 Kali Linux 之后,我十分艳羡 AUR 里的大量用户软件,也开始长期使用 ArchLinux 作为开发系统。 ArchLinux 可能确确实实是社区思想最为激进和包容的。 AUR 里充满了各种你想象不到的软件,由于没有协议的限制,你甚至能看到大量的私有软件。 AUR 使用 git 管理用户脚本,这代表每一个 AUR package 的维护者可以极为简单的长期维护。

当你在网上搜索关于 ArchLinux 的评价时,你会发现几乎是所有人都会诟病它的安装过于复杂。由于 ArchLinux 的哲学,你在安装时需要自己完全手动控制所有的事,包括:网络、语言、软件源、Xorg、驱动等等,它除了文档及一些辅助脚本外并不会给你图形化支持。事实上,我认为大部分人夸大了 ArchLinux 的安装难度,我第一次安装 ArchLinux 用了 15 分钟,甚至比一些提供图形工具引导安装的发行版还要快点,我认为除非遇到一些奇怪的问题否则照着文档 step by step 就万事大吉了。

使用 ArchLinux 你注定会养成遇事查看文档的好习惯,因为它的 wiki 文档真的是无出其右。通常情况下,你遇到的所有问题都能在 wiki 里找到解决方案。在 ArchLinux 中,你也可以选择任何你喜欢的桌面环境,不论它是 KDE 还是 DDE,甚至是 WM 都有着极好的文档。所有的软件都提供两种安装方式:二进制包和源码包。你可以根据自己的设备性能来选择你想要的方式。总的来看, ArchLinux 是最为宽松的,且拥有质量较高的社区、文档和用户,如果单从这三方面来看 ArchLinux 就是最好的,唯一能与它掰手腕的就是 Gentoo 了。

ArchLinux 让我明了了完整 Linux 的结构,它以高可定制性闻名。如果你是一个乐意折腾新鲜事物及刺激感的 x64 入门(存疑,我是这样认为的)用户,那么 ArchLinux 绝对是你的最好选择。至于为什么说是 x64 呢, ArchLinux 对别的架构并没有官方支持,而且几年前已经完全移除 32 位安装镜像,所以安装一个 i686 的 ArchLinux 是有些困难的。我遗忘说明的一点是 ArchLinux 是一个完全滚动发行版,一次安装,终身最新。

编译,编译,编译 – 构建性能最佳的 Linux

在 2018 年,我购入了几本 Unix 的书,对 Unix 产生了莫大兴趣。什么叫做血统纯正(战术后仰)?对于 Unix 的历史和分支,限于篇幅我无法细讲,这其中的故事大概可以单独拿出来写一篇很长的文章了。我选择了 FreeBSD,这是一个 UC Berkeley 维护的类 Unix ,其实血统并不纯正,不能大言不惭的称之为 Unix。但其实也是没有办法的事,事实上,当你不付出金钱代价,你无法体验到正儿八经的 Unix 。 FreeBSD 已经是一个很纯净的类 Unix 了,只是没有通过 SUS 认证(没人交钱)。这也是在本文中拿来和 GNU/Linux 一起讲述的原因,对于 Unix 、类 Unix 、 Linux 其实没有锱铢必较的必要。

我使用 FreeBSD 的时间其实是十分短暂的,和我使用 deepin 的时间伯仲之间。一开始我是为了体验 Unix 哲学和 TECO 才安装了 FreeBSD ,后来我发现 FreeBSD Ports 竟然如此的好用,有一瞬是想长期使用 FreeBSD 的,最后促使我离开 FreeBSD 的原因 Ports 也是其中之一。当你也尝试使用 FreeBSD 时,你会发现它确实有一股古董的腐朽的味道了,尽管它的设计仍然是现代的,作为中文用户许多软件的 FreeBSD 支持并不好或者说压根不支持,你会在编译时遇到各种问题。作为一个尝鲜的用户,其实并没有太大的动力去解决抑或是移植,这也是软件生态对操作系统的影响的体现。促使我快速放弃 FreeBSD 的原因还有 Ports 的编译速度,它好用归好用,但是我第一次编译 KDE 足足花去了 8 个小时。这两点就好比让你去当一只瘸腿行进的乌龟,尤其是我还是一只没什么经验的乌龟。最终我快速放弃了 FreeBSD ,尽管它好用与稳定。

当你开始追寻定制追寻性能是,你无法不去尝试的一个发行就是 Gentoo – 它拥有世界上第一好的包管理器、世界上最好的不亚于 ArchLinux 的社区 wiki 文档以及没有替代品的 USE Flag。当我第一次安装使用 Gentoo 是痛苦与震惊的,痛苦的是它的安装确实有些困难,当你第一次接触 USE 标记时,也一定会困惑于它。 Gentoo 利用 USE 标记、 Portage 和 slot 完美的做到了依赖计算、编译控制和多版本软件共存,你会发现当你使用 Gentoo 一切都是那样的和谐。 Gentoo 同样提供类似 AUR 一样的仓库 – overlay,数量及质量上比 AUR 只高不低。而且 Gentoo 的团队是更加稳定负责的,所有官方仓库的包都经过严格验证,质量普遍很高。

既然 Gentoo 是这样的厉害,是不是大家都 Gentoo 完事了?事实上我对 Gentoo 一直都是难以割舍的,但是仅次于 LFS 的安装配置难度以及大量的编译时间已经可以把大部分人拒之门外了。由于追求最完美的性能,所有的软件你都必须编译完成安装,无法通过二进制包的方式来安装,更新也是如此。好玩的一点是,我每次更新 Gentoo 时都能看完两部电影,我认为长期使用 Gentoo ,找寻电影资源也是一个难点。

对于 Gentoo 我还有一个小提示:由于可以限制安装软件的协议,你可以利用这一点构建一个真正的自由操作系统。

返璞归真 – 最适合我的 Linux

后来,我发现我对发行版的大致需求就是较新的 KDE 、滚动更新和软件资源丰富一些。一开始我以为 openSUSE Tumbleweed 就是我的最好选择了,后来我所维护的服务器都变成了 Ubuntu Server 和 Debian 9 ,索性我也不想使用 rpm 系的发行版作为桌面了。当时正值 KDE Neon 大火,我也去尝试了一下。 Neon 在国内好像用的人不多,同样是 Ubuntu Base 大家好像更愿意选择 KUbuntu (当然现在 KUbuntu 已经成为历史了), Neon 是 KDE 社区维护的一个滚动发行版。我对它无法作出太多的评价,因为它没有缺点。

现在我正在使用 Debian sid ,这已经持续了一段时间。它的表现无可指点,十分优秀。尽管没有 ArchLinux/Gentoo 那般峥嵘。我认为 Debian sid 就是我日常使用的最佳选择,它稳定而易用。

本文的最后,我大概总结下我所使用过的发行版有哪些特点和我认为它们更适用的用户群体,希望能够帮助到他人。

对于中文入门用户,我认为 Ubuntu Kylin 是很好的选择。 它在大多数型号的机器上表现的很好,在最近几年桌面环境更迭为 UKUI 之后,交互体验也在渐渐贴近 Windows,比较适合 Windows 迁往 Linux 的用户迁移。

对于 KDE 用户,我认为 KDE Neon 和 ArchLinux 是唯二选择,你可以在这两个发行版上体验到最新的 KDE ,只不过 Neon 上的是由 KDE 社区驱动。

对于期待深入 Linux 的用户,我认为 Fedora 和 ArchLinux 是不错的选择。你可以在这两个发行版上体验许多实验特性,而它们的软件资源本身就十分丰富。 Fedora 的唯一劣势可能就是中文社区的活跃度无法与后者相比。

对于想要或已经成为专业用户的人,我认为 Gentoo 和 ArchLinux 是不错的选择。它们都可以为你提供灵活的选择和配置。

对于想要构建高性能服务器的用户,我推荐 Gentoo 。我的这个看法可能是错的, Gentoo 可以控制适合设备本身情况的编译参数,而官方也维护这一个安全加固版本,据说以前豆瓣的服务器也是使用 Gentoo。

对于作为桌面日常使用的用户,我推荐 Debian。它的任何分支都挺适合长期使用的,不论是 stable、testing、unstable 分支,都能很好的工作。

文章来自:https://blog.ngcrl.org/posts/how-to-choose-linux-distro/

投稿作者 作者网站
Linux之灵 https://blog.ngcrl.org/posts/how-to-choose-linux-distro/

评论

 
 

发表评论

 
你的昵称*
电子邮件*
网址(选填)
我的评论*
  • 发表评论
  • 为您推荐


    请支持IMCN发展!

    谁在捐赠

    微信捐赠 支付宝捐赠
    微信捐赠 支付宝捐赠




    微信公众号二维码

    归档