
今天,我一覺醒來,心裡癢癢的,很想搔一搔: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 程式。
「其餘的」只是更多編譯和管理(依賴項)的軟體包,即應用程式。