我使用的软件 - Linux入门篇

17

Linux平台是我最喜欢的平台——仅次于macOS。在这篇文章,我打算从两个角度(或者说两个不同的用途?)介绍我在Linux生态、也许带一些BSD生态的软件选择。我将把文章分成桌面体验和更广泛的CLI应用。从init程序到性能监视器,从容器化到虚拟化,从商用到游戏。

发行版很重要

一个好的发行版决定了你整个Linux环境的基调。就像是好的音乐,其中的氛围必不可少,而和声更是重要一环。和声风格会直接影响整体的旋律表达。抛开复杂的音乐理论,想象一下你在一个大学读书。你走进图书馆,却发现里面的自习室坐满了情侣和蹭免费网络玩游戏的瓦罗兰特玩家,你还会有安心学习的欲望吗?

Linux中,我暂且将发行版分为红帽系与Debian系。我个人主要是从包管理器进行分类的,当然这并不严谨。但各位姑且可以从某个发行版的上游,判断其到底基于RHEL还是Debian。

所幸Linux相比起BSD而言生态系统更统一。因此除非特别指出,大部分都是在谈论Linux下的情况的。

桌面体验

Linux Mint

如果你是新手,我会让你无脑选择Linux Mint。其作为Debian或Ubuntu的分支,整合了Ubuntu的易用性,又摒弃了Ubuntu其糟粕。大可无脑开箱即用。其软件仓库管理上基本等同Ubuntu的LTS版本,相对而言更稳定与保守。

当然,如果你已经不是新手了,你肯定会吐槽:”为什么LM没有Pipewire?为什么LM没有Wayland?“

确实现在来说没有。并且Linux Mint无论是内核版本还是系统组件都相对保守。你可以破口大骂PulseAudio高延迟、蓝牙不友好,或是吐槽某个内核模块因为版本不适配无法安装。但你不得不承认,Linux Mint是最不容易炸的那个。

Flatpak的引入也使得Linux Mint的生态更易用。最起码你在安装桌面软件时,依赖问题会少很多。

我在部署需要大规模计算的场景会优先考虑Linux Mint。比如,我要做GPU农场,或者是跑一些集成的Web服务。Linux Mint的稳定性十分可靠。当然,配合以下指令更佳:

systemctl disable lightdm

这样就是一个预先阉割了无用功能的超稳定Ubuntu了。十分好用。

Fedora Workstation

想起来,能与初恋相识,也是多亏了在志愿活动上用Fedora Workstation启动MuseScore写曲子。

虽然那最后是一个悲伤的故事,但《Sweet Smile》和《月色真美》都是在Fedora Workstation完成作曲、作词和编曲的。

因此我对这个发行版,有一种独特的情怀。

Fedora Workstation是红帽系的经典发行版了。相比起Linux Mint而言,他是另一个极端。

Fedora Workstation是能新则新。毕竟是CentOS的上游,大部分新的特性都会在Fedora上先进行测试,后下放到CentOS与RHEL。

因此你可以在Fedora Workstation上体验到相当新的内核版本、Wayland和Pipewire以及接近滚动式的软件包更新。

得益于Wayland的加持,你可以随便在上面跑Waydroid安卓容器,而不需要考虑Cage的问题。Pipewire对于那些需要用到DAW来进行音乐创意的人也相当有用。就我测试而言,Pipewire的延迟相当于你在Windows系统使用ASIO4ALL的效果。可以与苹果的CoreAudio媲美。当然,Pipewire并非Fedora的专利,但这可是开箱即用的体验。你可以把FL Studio之类的DAW跑在wine上,拿来做编曲大部分的插件都是可以运行的。

当然,就和大部分Linux平台的音乐人会做的那样,你可以只安装MuseScore+MuseHub并配合Audicity或其他DAW来使用。我选择了前者组合,因为录音的场景对我而言不是特别常用。

Fedora Workstation遵循半年一次的大版本更新。其更新节奏之快,更适合像我这样喜欢技术尝鲜的人。至于数据?你是不会rsync?多做几次备份就好了。

另嘴一提,Fedora Workstation默认使用GNOME。对资源敏感的话,可以选择直接下载Fedora Server版后选装Xfce。我当年用的暗影精灵8,配置还是相当足的。(12代酷睿i5+3060的组合)

为什么不提Arch Linux?

Arch并非是一个新手或过渡期适合的发行版。说实话,我只在Arch上跑过Matrix聊天服务器和内核编译。在我看来,除了滚动式更新和AUR,它并没有太多的值得吸引我的特色。甚至综合考虑后,我得出了弊大于利的结果。

我的生活不仅仅专注于技术,还有学术。我不可能拿出太多的时间去管理他的滚动式更新。最起码偶发的故障是很难接受的。相比之下,我认为Fedora还算是遵循了一定的稳定性的标准,你不用担心dnf update一套操作会带走你的GPU驱动。

此外,对于那些需要Arch Linux的用户而言,他们会自己主动寻找Arch Wiki来阅读。事实上,我也经常用Arch Wiki来解决我在其他发行版遇到的问题。Arch Wiki的内容不一定都适用其他的发行版,但其中对各个软件包与其搭配的原理或配置文件的介绍,是不仅适用于Arch的。

如果你想反驳,我想你已经是个Linux老手了。这是一篇我希望更适合新手阅读的博文。有关Linux的深度讨论,我想我会另外起一篇文章来单独聊聊。

为什么不提Ubuntu?

说实话我很佩服Canonical的营销能力。能让大家提起Linux就会有大多数人想起Ubuntu。但我既然不提Ubuntu,说明接下来的大部分内容就不太好听了。最起码是比较尖锐的声音了。

我最反感Ubuntu的Snap。Snap作为一个后台常驻的系统级的包管理程序——等等,一个包管理器为什么要系统常驻?

就连Android的Package Manager都不会这么干。我觉得Google将其Play服务与Package Manager强结合已经很让人感到不快了,但这玩意起码还没到常驻,或者常驻还吃一大片运行内存的程度。

而Snap开机自启就要单独吃掉200多MB的运行内存。你也许会认为这不是一个大数据,但要想想,Linux Mint作为不带Snap的Ubuntu分支,在禁用桌面管理器以纯终端模拟器的形式启动后,也只占300M左右的运行内存。一个包管理器,何德何能吃掉一个操作系统冷启动后的占用?

Canonical的营销手段也很粗暴。首先,他们在CSDN、b站等平台铺天盖地宣传他们的Ubuntu。其次,他们还会拉踩其他的发行版来宣传他们的Ubuntu。或许这就是商战,但作为开发者而言,这是一种令人难以接受的手段。

软件

图形化

适用于Linux的图形化程序虽然不多,但我可以稍微列举一些非常实用的。

首先是Firefox。我最爱的跨平台浏览器。只要你的内核版本不会太老,你就可以很自然地在上面使用硬件编解码来在线播放视频。

随后我想介绍Kdenlive。这是一个类似于Pr的非线性剪辑软件。达芬奇我个人还是当作线形剪辑的逻辑去理解的。这对于新手来说并不是很友好的事情。

FreeFIleSync也提供Linux版本。如果你是不会使用Rsync的孩子,或者只是想更直观地看到备份的过程,可以使用这个软件来备份你的文件。

Cider是一个开源的Apple Music客户端。此外,网易云音乐提供了其Linux版本。

命令行工具

在桌面化环境我没有太多的命令行工具可推荐,除了两个我需要特别提出的:

一个是zsh,另一个便是btop。

zsh是一个Shell环境。比起大部分发行版自带的bash而言,zsh提供了更多的可自定义项。对于想要实现花里胡哨的终端模拟器效果的朋友来说,可谓是相当舒适了。

btop则是一个资源监视器,这方面不多说,上图就理解了:

服务器和单片开发板

这方面我就直入正题了。

毕竟都开始玩无头环境了,我想分享一些个人经验应该就足够了。

Alma Linux还是Rocky Linux?

对于服务器来说,挑来挑去,也就只有红帽能选。对于需要鲁棒性支持的作业环境来说,Alma和Rocky都是不差的选择。

就我日常使用来说,Rocky Linux会提供更保守的策略。Alma虽然稍微更激进,但也就比Linux Mint稍微激进一点。可能还不如Linux Mint猛。

我的WAF目前运行在Alma Linux上。感觉良好。

Debian?Armbian!

而那些用单片板和玩小盒子的有福了。Debian和Armbian因为生态庞大,肯定是更适合小众设备的。尤其是Armbian。其易用性自不必多说。

对于树莓派而言,则有专门的操作系统。按照官方文档玩,肯定能玩的尽兴。

Ubuntu IoT其实也不差。但我不太想提它。

软件

软件方面我想介绍的就相对较多了。我就稍微挑几个我最喜欢的来讲。

首先是tmux。tmux是一个类似于screen,但比screen更强大的存在。你可以通过更简单的tmux a返回你的会话。此外,tmux的界面更直观,还允许单个回话运行多个程序。每个程序都被分割为不同的窗口,通过^B快捷键并使用箭头键移动高亮到需要的窗口,并按回车确定需要的窗口。

此外,喜欢炫耀服务器配置的可以用neofetch和htop。这两个软件我基本上必装。

conda也是一个必不可少的软件。通常安装conda是不需要特权的,你可以直接部署在你登录的用户的shell上。对于一些需要管理环境尤其是避免python环境污染的情况,conda很实用。

mcsm作为一个原本用于Minecraft的守护程序,事实上在其他业务上也很实用。我后续很多服务器的rsync都通过mcsm保活。唯一缺点在于nodejs占用比较大。在BSD或资源紧缺的Linux环境上,我会改用supervisord来解决这个问题。毕竟自带的init程序或服务监视器不总能解决问题。

JDK我想单独提一点:Zulu的JRE我很喜欢用。我做开发时也喜欢他们的JDK。无他,性能较好。比起OpenJDK而言就是更好的性能优化。

单独讨论:BSD系统

BSD我用的不算多也不算少。但想要总结的点并不多。因为不想单独开文章将,就稍微说几个点。

首先是大部分BSD发行版都还在用比较原始的init程序。这是好处也是坏处。我一般都是配合supervisord用的。

其次BSD虽然可以跑Xfce,但我不建议日用。真的,很不建议。

最后就是,我一般只用BSD作为最底层的网络管理设备系统,例如OPNSense。或者是一些需要高性能的存储需求,例如TrueNAS。因为BSD足够安全,也足够可靠。单独要讨论发行版的话,我更建议FreeBSD。因为其维护人数更多,生态也较大。

最后

Linux软件也好、操作系统也好。请记住技术是用于服务于人的。因为每个人,大到每个发行版设计理念的差距,在这个问题上不存在通解。辩证思维与逻辑学并用,选择一个最适合业务的解才是最好的。

如果你更熟悉Debian系,就不要强逼自己在一个新的生产环境上用RHEL或类似发行版。你大可以在虚拟机上熟练了新的环境之后再考虑投入实际生产。