CentOS软件那么老为什么大家还要用它?
作为一个专业的服务器系统,RHEL 系统理论上每一个软件包都有 RedHat 内部的人员负责维护,这个维护包括长期(和系统生命周期一样长)的开发、更新、测试、运维等。也就是说你能从 RHEL 系统源上获得的每一个软件包,出现问题都可以找 RedHat 负责。所以 RHEL 不可能无限制的扩充自己的软件库,不能信手拈来想加什么就加什么,因为加进来是要负责的,是对应相应的人力成本的。所以软件源的规模必须受到限制,企业级用户特别需要的才会有,可有可无的都要评估一下哪个可以加进来哪个不要。这绝对不是普通的桌面用户群所期望的,因为普通的桌面用户群体的宗旨是 “多多益善,我可以忍受不严重的 bug,但是你不能没有我要的功能软件”。比如你如果没有可以解码播放 rmvb 等格式的播放器,那我是肯定忍不了的。但是如果你提供,只是有一点点广告或者有一点 bug,那我是没问题的,比完全没有要强百倍。
而 CentOS 的软件源的匮乏程度比 RHEL 可能强一点,毕竟它可以不需要对 “甲方爸爸” 负责,所以稍微大胆点多加点东西是能理解的。但是受到系统老旧程度和人手限制,能加的也有限。毕竟很多人只是用 CentOS,但是肯为 CentOS 打包维护更多软件的人凤毛麟角。
软件 “老” 而且会越来越 “老”
一个服务器系统的生存周期非常长,动不动就是十年起步。组成系统的软件在系统构建初期就订下了基线版本,比如在 RHEL-7.0 初次构建的时候选择的 gcc 版本是 4.8,那么即使到现在 (2021 年 11 月)上游最新的 gcc 版本已经更新了 11.2,RHEL-7 最新的系统上的 gcc 仍然是基于的 4.8 版本。虽然应用户需求,中间 backport 了很多修复性和新特性的 patch,但是单论特性肯定还是不能和 11.2 版本比的。这就是为什么说软件老,且越来越老的原因。
那么作为一个普通的桌面用户,如果你想使用新版 gcc 上的某些特性,你会发现自己既没有能力完美的单独更新系统的 gcc 到最新(因为受到其它软件包依赖的限制),也极少有人有能力单独把需要的新特性所对应的代码 backport 到老版本上来增强特性。这样的窘境就完全限制住了用户所能 “享受” 的功能和特性的范围。系统已经生存的时间越久,被限制的越死。
CentOS 和 RHEL 一样的,即使 CentOS 的人有意翻新一些软件的版本,它们绝大部分情况下也无能为力,因为 CentOS 还要随着 RHEL 走呢,所以没法偏离的太远,否则它自己没有那么多人力单独维护。
综上所述,“CentOS 软件那么老为什么大家还要用它?” 这个问题中的 “大家” 就包括了两类人。一类是没有必要用但是瞎跟风才用的。另一类是需要用的。
没必要用但是瞎跟风用的人群
这类人多以新人为主,因为 RHEL(及其下游系统)作为现在最主流的服务器系统,每一个想要入行 Linux 的人基本都会被告知应该从此学起,特别是网上众多的教程、帖子也多是围绕 RHEL 类系统。而 RHEL 系统又是收费的,一般人用不到,于是免费的 CentOS 作为 RHEL 的克隆版就被不明所以的新人误以为是 “免费的 Linux 旗舰版”。好像有一种 “我花 4000 元买的课程免费给大家下载” 一样的 “不赚白不赚” 的喜悦。
殊不知 RHEL 或者说 CentOS 对于普通的桌面用户来说 “又老又资源匮乏”,所以这类用户用久了之后就会发现,周围仍然有很多人在不明所以的安利 CentOS 类系统,但是自己用起来又觉得 “不好用”,于是在心底里产生了 “CentOS 软件那么老为什么大家还要用它?” 的疑问。
但是这个问题为什么没有形成规模,可能是因为大部分人迫于周围很多人都在说 CentOS 好,而自己如果体会不出 CentOS 的好,特别是还问出来,那会显得自己很 Low。
需要用的人群
作为专业的服务器操作系统,RHEL 确实是值得服务器用户使用的。企业级用户就不用说了,某些个人用户也有需要使用面向服务器的操作系统的时候。虽然我上面说 RHEL/CentOS 类的系统对于普通桌面用户来说不好使,那是因为普通桌面用户最主要的需求是系统没有严重 bug 的情况下提供越多越新的功能越好。但是需要服务器系统的用户的需求则是系统能持续稳定运行的时间越长越好。
比如我有一个笔记本电脑,我平时用它办公、浏览网页、看视频、打游戏等,我对它上面的系统的需求就是:
给我提供尽可能多的软件资源能让我选
让我能不费力的跟着享受当前非常新的很多软件特性
即使某个软件或某次更新有 bug,但系统只要维持 1 天以上不死机就可接受。因为基本上我晚上睡觉就关机了,坚持到下次修复没什么困难。
同时我在远处的某个地方还有一台工作机,这个工作机我需要它跑很多定时执行的任务,需要它长期维持某些程序的运行。这个 “长期” 可不是一两天的事,甚至一两个星期都不行,而是以年甚至更久为单位。如果能做到一次开机到死不用重启最好。
我给这个工作机装的一个不算新的 RHEL8 系统,除了非公司大楼停电,它基本没死机重启过。而上面我跑了很多虚拟机,我在这些虚拟机里面装了各种系统,有能支持更多新特性的 Fedora 系统,有比较稳定的 CentOS 系统等。而这个 host 主机上的系统只要能维持稳定,并支持我运行这些虚拟机(或容器)就可以。