假如只能用一个GNU/Linux发行版,你推荐哪一个发行版?

发布时间:
2023-08-24 12:35
阅读量:
13

夸张点说,其实世界上只有两种Linux发行版:deb系和rpm系。deb系的代表是debian,rpm系的代表是RHEL和其旗下的社区的CentOS以及社区的fedora。

除此之外,还有两种Linux源代码发行版(被称为“元发行版”):LFS(Linux From Scratch)和Gentoo。LFS没有包管理器或者说以人本身为包管理器,Gentoo有包管理器、基于源代码在本地(你的机器上)编译安装软件包。

追根朔源的讲,一切开源软件包的最原始发行方式都是源代码软件包,就是tarball(.tar.Z,.tar.gz,.tar.bz2,.tar.xz)。一切Linux发行版(包括发行版和元发行版)的安装包都是tarball转换(编译打包)过来的。一切tarball都包括源代码文件和构建脚本文件,加上文档(许可协议、开发者名字列表、README等等等等)。

现代Linux(继承了Unix的传统),还是以C语言为基础。内核是C语言的,标准库是C语言(C语言和C++语言)的。这里面的关键是:一个系统,只能有一个C语言标准库(也只能有一个C++语言标准库)。

我再重复一遍:现代Linux系统,内核仍然是C语言的,标准库仍然是C语言和C++语言的。一个系统,不论有多少包管理器,这些包管理器,只能给这一个系统,安装一个C语言标准库(也只能安装一个C++语言标准库)。

按照标准库角度看,三元组(Triple)的概念就好理解了。Host、Build、Target,基础就是Host的glibc(和libstdc++)、Build的glibc(和libstdc++)、Target的glibc(和libstdc++)。

回忆一下LFS的步骤,构建交叉编译临时工具链,

第一步,就是更新“gcc 第一遍”和“binutils 第一遍”,此时这“gcc 第一遍”和“bintuils 第一遍”他们两个的基础,就是Host的标准库。

第二步,构建glibc(libstdc++)和“gcc 第二遍”以及“binutils 第二遍”,此时这“gcc 第二遍”和“binutils 第二遍”他们的基础,就是构建这一步先构建出来的glibc(libstdc++),这个glibc(libstdc++)就是Build的glibc(libstdc++)。

最后,chroot和构建整个基本系统软件 ,构建glibc(libstdc++)和新系统的gcc及binutils,和所有其他的基础软件。这个glibc(libstdc++)就是Target的glibc(libstdc++)。

学习开源,学习Linux,要学习源代码,要学习构建脚本。学习Linux发行版,要学习元发行版,要学习到LFS和Gentoo。

使用开源,不一定要本地编译,本地编译太耗费时间和计算资源了。发行版社区集中编译一下就好了。所以,推荐fedora和debian。

鉴于fedora的东家红帽子公司已经被IBM公司收购。IBM公司,哎!

就不推荐fedora了。

所以,最终,我推荐debian。

C语言的基础,会被颠覆么?微软说,他要用Rust重写Windows 12的内核。Linux也引进了一些Rust的基础设施。一些,才刚开始,看以后的发展吧。

END