今天,我一觉醒来,心里痒痒的,很想挠一挠:Linux 发行版到底是由什么组成的?当然,我不仅仅是在没有搜索过的情况下寻找答案。根据我的理解,Linux Distro 由以下组件组成:
Linux Kernel
GNU tools and libraries
Package Management
Documentation
Windows System
Windows Manager
Desktop Environment
我有什么遗漏的吗?
答案1
我在这个列表中缺少的东西:
引导装载程序
没有一个你就走不了多远。
-
被视为理所当然且容易被遗忘。库无疑是 Unix 环境中最著名的。
根 FS 和其他资产
即使许多(大多数?)程序可以使用默认值自行运行,发行版通常会带来自己的、最小的、预填充的根文件系统,其中包含必要的配置和其他文件,使它们与其他程序不同,并且对用户(我们)来说更方便)来使用。更多的资源与软件包中的第三方程序捆绑在一起。这对于使事物作为操作系统一起工作也很重要,我倾向于认为适应和捆绑是发行版和软件包维护人员工作的很大一部分。
应用!
核心、工具(顺便说一句,除了 GNU 之外,几乎每个 Linux 发行版都有 BSD 和其他操作系统实用程序)和 (G)UI 都很好,但是你要用它们做什么呢?每个操作系统的好处是提供巨大的针对受众的应用程序选择,而桌面环境只是其中的一小部分。
答案2
缺少的一件事是安装人员程序和引导加载程序。没有哪个发行版只为您提供工具和信息。
我将这三个 Windows/桌面总结为图形用户界面。或者外壳和图形用户界面。
“GNU 工具”不是很精确。有核心工具包,但是山例如不是 GNU 工具。还模组探针很特别。
redhat.com 持谨慎态度:
注意:当提到 Linux 时,包含和不包含的内容是 不断争论。出于此定义的目的,我们将 Linux 内核与工具、应用程序和服务与它捆绑在一起。所有这些东西共同构成了大多数人称之为 Linux 的功能操作系统。
包管理器和文档是你的优点。也许您可以找到一种令人信服的方法来整理这些工具、应用程序和服务。
这是我在 arch-linux 中对“base”组中的 50 个软件包进行的分组。我在行尾放置了一些常见类别。
bash SHELL
util-linux "SYSTEM UTILS"
coreutils "GNU FILE etc. UTILS"
bzip2,gzip,tar
dhcpcd,inetutils,iproute2,iputils,netctl NET
e2fsprogs,jfs-,reiser-,xfs- FILESYSTEM
pacman PACKAGE MANAGER
systemd-sysvcompat INIT
glibc,gcc-libs CC
gawk,perl,sed PROGRAMMING
less PAGER
man-db,man_pages,texinfo DOCU
nano,vi EDITOR
s-nail E-MAIL
findutils,grep,diffutils,file
dev-mapper
lvm2,mdadm,cryptsetup
pciutils,usbutils,sysfsutils DEVICES
procps-ng,psmisc PROCESSES
logrotate
shadow USERS
gettext TRANSLATIONS
这是技术先决条件和基本用户需求之间的结合。缺少的部分是 GUI 和 C 编译器(GNU 编译器集合)。该gcc
命令可能永远不需要,但理论上它是必不可少的(工具链)。
我尝试从“基本”到“附加”排序,但只是粗略地排序。 EDITOR 类别可以扩展到 vim(或 emacs),然后通过 GUI 子系统扩展到 TEX 或“office”word 程序。
“其余的”只是更多编译和管理(依赖项)的软件包,即应用程序。