关于选择不同Linux发行版的一点看法
关于选择不同Linux发行版的一点看法
我在知乎上回答问题:“你为什么使用某个特定 Linux 发行版?”时写的答案。 你为什么使用某个特定 Linux 发行版?
Linux发行版简介
从17年大一下学期开始接触Linux,到现在已经5年了。我把distrowatch上排在前面的,比较大众的Linux发行版都试过了。
Deb系:Debian、Ubuntu、deepin、elementary,Kubuntu,Mx Linux
RedHat(rpm)系:Fedora、RHEL、Centos
RedHat 之外的rpm系列:OpenSUSE
Arch系:Arch Linux、Manjaro
Gentoo系:Gentoo
上面排在前面第一个的是上游发行版,剩下的基本上都是基于这些系列的下游发行版,其他的未列出的也基本是属于这些系列。
我的使用历程
我经过了从deb->rpm->Arch, Gentoo的过程,现在是稳定在使用Arch Linux & Gentoo。
台式机性能强,用Gentoo,笔记本用Arch Linux。
但是在服务器上,我使用的Ubuntu或者Debian,原因在于可以同时兼顾软件相对较新与稳定。
发行版对比 下面来讲讲我使用这些发行版的感受,以及最后为什么要选择Arch跟Gentoo。
首先Linux发行版之间区别最大的在于包管理器(apt,rpm,pacman,portage)、更新方式(定期发布、滚动更新)。
体现在用户体验上,就是软件的安装命令方式、软件的数量多少、软件的版本等。
在其他的问题其实大同小异,没有太大区别。
1. Deb系
网上给新手推荐发行版,应该都会提到Ubuntu,因此先从这个“最流行的”Linux发行版开始说。
Ubuntu是Debian的下游发行版,与Debian一样,使用apt作为包管理器,默认包格式是.deb。
Ubuntu的最大特性就是,用的人多,教程多。具有两种发行方式:一年一更新、长期维护版(LTS)2年一发,维护时间一般都能至少5年。
包管理器其实比较平常,基本的安装、卸载、查询等,也可以自定义软件源,添加第三方维护的软件源。但是第三方软件源少,并不是很丰富。
Ubuntu的软件依赖也是比较麻烦的一件事,这个使用过的应该都有体会。
对于官方源中没有的软件,很多时候需要去下载deb包进行安装,具有windows那味,但是这对习惯使用命令行的程序员来说不是一件方便的事,个人不是很喜欢使用Ubuntu作为桌面系统。
但是我服务器会使用Debian/Ubuntu LTS系统,原因上面说过,兼顾稳定与新。
颜值党会喜欢deepin、elementary这些,我安装完没用到一天就换了,过多的也不评价
但是个人觉得,你喜欢一个桌面,一个主题,完全可以通过任意发行版去安装配置,只是这些特定发行版给你初始设置好了。
2. RPM系
除了与deb系在包管理器不同之外,使用体验没啥区别,RHEL可以提供商业服务、OpenSUSE也有对应的商用SUSE。
Fedora是RHEL、CentOS的上游,Fedora是社区版,更新速度快,CentOS软件一般比较旧,并且以后没有CentOS这系统了,停止版本更新了。RHEL相当于付费版的CentOS,有付费服务支持。
3. Archlinux & Gentoo (桌面用推荐首选)
首先两个发行版有共同点:
系统自由度非常高,从内核选择,编辑器,驱动,桌面环境,都需要在安装的时候自定义安装,并且都是从无图形化界面开始安装。
并且官方包管理器没有的软件,可以第三方软件源添加,软件包非常丰富。
两个发行版都是滚动更新,软件非常新,也意味着偶尔要承担新软件bug的风险。
但是,但是,并不意味着不稳定,只是个别软件在升级后,其他软件没跟上出现一点小bug这种。目前个人用Arch Linux已经快四年,Gentoo一年,没出过大bug,一点小bug社区一搜就能找到解法。
不同点:
Arch Linux & Manjaro
Arch Linux的包管理器是pacman,软件包主要是二进制方式安装,有AUR可以添加非官方维护软件。pacman包管理器非常优秀,可以安装第三方辅助软件yay,来统一管理pacman官方源与aur源。使用体验非常棒,感受不到软件依赖带来的问题。
Arch Linux还有个最强大的“工具”: archwiki,这是linux界最强大的wiki社区,基本上所有日常使用遇到的问题,这里都有对应词条。其他很多linux发行版也会到这来找问题答案,但是哪有Arch Linux自身跟词条问题匹配度高呢。
Manjaro是Arch Linux的下游发行版,并且在安装时可以通过图形化的方式安装,比Arch Linux方便,使用上与Arch几乎没有差异,是非常推荐桌面使用的一个发行版。
Gentoo
Gentoo的包管理器是portage系统,这也是一个非常强大的包管理器系统,日常使用emerge命令进行管理,软件基本都使用源代码编译的方式安装,可以使用USE标识决定软件一些可选特性。
如果你源码安装过软件包,应该知道在源码编译时,可以传入一些参数,决定软件的特性,而portage的USE就是帮你在中间做了这件事,gentoo在安装软件时,可以看到一些可选USE标识,根据自己需要开启。有些软件在开发时会考虑兼容性和灵活性,给很多可选依赖开启自定义选项。
比如,如果在安装kde桌面环境时,可以通过USE决定是否安装sddm、kwallet、networkmanager依赖,选择之后,portage便会自动计算并安装好依赖,对于其他发行版,就没有这么方便,也没有这么高的自由度了。
Gentoo还有个最大的特点是:init程序是可选的。上面我提到的发行版都是默认使用systemd作为init程序。init就是Linux发行版中用来管理软件启动的,决定软件启动与否以及启动顺序。
Gentoo可以选择OpenRC还是systemd,OpenRC非常简洁,依赖少,我现在就是用的它;
Gentoo可以说除了编译麻烦之外,其他发行版具有的有点它都有。
Gentoo的软件依赖,只要使用的一些自定义overlay不是特别的杂乱,那软件是相当的稳定,portage解决依赖也是非常强的。
由于Gentoo包是从源码编译安装的,因此几乎可以支持所有Linux内核支持的芯片架构。不像二进制发行版一样,只有预定义的x86/amd64、arm64这两种。
总结
最后总结一下,其实大多数人用Linux发行版,无非就两个用途:服务器,桌面。
从服务器视角出发,我们需要一个稳定的系统,并且不需要连接服务器进行经常更新。因此Debian、Ubuntu LTS这种就是首选。
从桌面用途出发,
如果你是非常新手的,推荐Ubuntu,
否则都推荐使用Arch Linux,
如果是我这样的折腾狂,也可以尝试Gentoo。
上面都没有讲桌面中大家经常折腾的:桌面美化。
正如我前面说的,发行版之间就是软件多少、新旧的区别。只要你美化的时候,软件都可以安装,版本在兼容范围内,都可以达到对应的效果。
能减少折腾的就是像Archlinux、Gentoo这样,在安装的时候就一次性折腾完,后面配置美化都会非常省心。
另外一个原则就是,尽量使用上游发行版,越下游被魔改的内容越多,查找资料时,可能遇到更多的麻烦。
对于其他的应用场景,像题主这样的,我觉得最节约时间的就是最好的发行版,教程用Ubuntu,你跟着用Ubuntu学就好了。折腾其他的发行版,会像我前面说的,软件数量、名字、版本可能不一样,使得你需要花一些时间安装需要的软件。
就说到这了,以后有补充再加