Arch 与其他发行版的比较
本文档旨在将 Arch Linux 与其他知名的 GNU/Linux 发行版和类 UNIX 操作系统进行比较。以下摘要是对这些发行版的简要描述,可以帮助用户判断 Arch Linux 是否符合他们的需求。尽管评测和描述可能很有用,但亲身体验无疑是比较发行版的最佳方式。
有关更完整的比较,请参阅 Wikipedia:Comparison of operating systems 和 Wikipedia:Comparison of Linux distributions。
在以下所有内容中,仅比较 Arch Linux 和其他发行版。支持 x86_64 以外架构的社区移植版本可在 基于 Arch 的发行版 中找到。
源码发行版
源码发行版具有高度的可移植性,能够针对特定机器架构和使用场景控制和编译整个操作系统和应用程序,其缺点是源代码编译耗时。Arch 的基础系统和所有软件包仅为 x86_64 架构编译。
CRUX
- CRUX 是一个注重 KISS 原则的轻量级发行版。CRUX 曾启发了 Judd Vinet 创建 Arch。
- CRUX 使用 BSD 风格的 init 脚本,而 Arch 使用 systemd。
- Arch 使用滚动发布模式,而 CRUX 则大致每年发布一次。
- 两者都提供类似 Ports 的系统,并且像 *BSD 一样,都提供了一个基础环境供用户在此之上构建。
- Arch 拥有 pacman,它处理二进制系统软件包管理,并与 Arch 构建系统 无缝集成。CRUX 使用一个称为 *prt-get* 的社区贡献系统,该系统与其自身的 Ports 系统结合,处理依赖关系解析,但所有软件包都从源代码构建(尽管 CRUX 的基础安装是二进制的)。
- Arch 和 CRUX 都仅官方支持 x86_64 架构。
- Arch 拥有大量的二进制软件包仓库以及 Arch 用户仓库。CRUX 除了一个相对适度的社区仓库外,还提供了一个更精简的官方支持的 Ports 系统。
LFS
- LFS(或 *Linux From Scratch*)仅作为文档存在。该手册指导用户获取功能性 GNU/Linux 系统的最小基础软件包集的源代码,并手动从头编译、打补丁和配置它。LFS 是最精简的,并提供了构建和定制基础系统的绝佳学习过程。
- LFS 不提供在线仓库;源代码需要手动获取、编译和安装(存在多种手动软件包管理方法,并在 LFS Hints 中提及)。因此,除非您与他人组队构建 LFS,否则 LFS 没有除了您以外的任何软件包维护者。这意味着您需要自己测试所有软件包。及时修补安全漏洞也可能很棘手。
- Arch 提供了这些完全相同的软件包、一些额外的工具以及强大的 pacman 包管理器作为其基础系统,并且已为 x86_64 编译。除了最小化的 Arch 基础系统,Arch 社区和开发者还提供并维护数千个可通过 pacman 安装的二进制软件包,以及用于 Arch 构建系统 的 PKGBUILD 构建脚本。
- LFS 默认提供 sysvinit 或 systemd 之间的选择。
- Judd Vinet 从头开始构建了 Arch,然后用 C 语言编写了 pacman。历史上,Arch 有时被幽默地描述为“Linux,带有一个漂亮的包管理器”。
Gentoo Linux
- Arch Linux 和 Gentoo Linux 都是滚动发布系统,这意味着软件包在发布商发布后不久即可在发行版中使用。
- 默认情况下,Gentoo 的软件包和基础系统根据用户指定的 *USE flags* 和编译器标志直接从源代码构建。
- 自 2023 年 12 月起,Gentoo 开始为选定的 CPU 架构提供可选的二进制软件包仓库。
- Arch 提供了一个类似 Ports 的系统用于从源代码构建软件包,但 Arch 基础系统被设计为预先构建的 x86_64 二进制文件。
- 这通常使得 Arch 的安装和更新更快,同时允许 Gentoo 拥有更高的系统可定制性。
- Arch 仅支持 x86_64,而 Gentoo 官方支持更多 CPU 架构。
- Gentoo 的官方软件包和系统管理工具往往比 Arch 提供的工具更复杂、更“强大”,并且 Gentoo 的一些核心特性(如 USE flags、SLOTs 等)在 Arch Linux 中没有直接对应。其中一些原因是 Arch 主要是一个二进制发行版,但 设计理念 的差异也起着重要作用,Arch 采取了更注重架构简洁性、避免过度工程化的原则性立场。
- 与 Arch Linux 的 pacman 包管理器不同,Gentoo 的 Portage (Emerge) 可以作为 Gentoo Prefix 安装。这使得 Portage 可以在其他 GNU/Linux 发行版中作为第二个包管理器使用(非常类似于 Guix 包管理器)。
- 与 Arch 不同,Gentoo 为 systemd、OpenRC 和 其他 init 系统 提供官方支持。如果熟悉 systemd,Gentoo 用户通常也能轻松应对 Arch 的大多数其他方面。
- 由于 Gentoo 和 Arch 的安装都只包含基础系统,因此两者都被认为具有高度的可定制性,并强调用户选择。
GNU Guix System
- GNU Guix System 的灵感来源于 NixOS,就像 Arch 受 CRUX 启发一样。
- Arch Linux 和 Guix System 都是滚动发布发行版,软件包在发布商发布后不久即可在发行版中使用。然而,Guix System 主要是一个源码发行版(尽管存在预编译的二进制文件,称为“substitutes”),而 Arch 主要是一个二进制发行版。
- Arch 使用 pacman 作为包管理器,而 Guix System 使用 guix,它支持其他发行版中不存在的 实验性打包功能,并可在其他 GNU/Linux 发行版上作为第二个包管理器使用。
- Arch 仅支持 x86_64,而 Guix System 官方支持 多种架构。
- Arch 使用 systemd 作为 init 系统,而 Guix System 使用 GNU Shepherd。
- Guix System 在许多传统 Unix 概念上有所突破,包括 文件系统层级标准。例如,在传统发行版中分散在不同目录下的许多文件,在 Guix System 中会位于 `/gnu/store/` 下的某个位置。
- Arch 可能偶尔会提供非自由软件(通常是驱动程序),而 Guix System 只提供自由软件,并得到了 自由软件基金会 的认可——尽管存在提供非自由软件的替代仓库 存在。
- Arch 希望用户直接配置已安装的软件包,而 Guix System 则鼓励使用 Guile Scheme 进行全局系统配置,这进而 实例化 配置文件。
常规
这些发行版提供了广泛的优势和特点,可以满足大多数操作系统的使用需求。
Debian
- Debian 是最大的上游 Linux 发行版,拥有更大的社区,并提供稳定版、测试版和不稳定版,提供数十万个 软件包。Arch 的可用二进制软件包数量相对较少。然而,如果包括 AUR,数量是相当的。
- Debian 在自由软件方面持更明确的立场,但仍在其非自由仓库中包含非自由软件。Arch 则更为宽松,因此在 GNU 定义的*非自由软件包*方面更具包容性。
- Debian 专注于对稳定版的严格测试,该版本被“冻结”并支持长达 五年。Arch 的软件包比 Debian Stable 更新,更接近 Debian Unstable 分支,并且没有固定的发布时间表。
- Debian 可用于多种架构,而 Arch 仅支持 x86_64。
- Arch 提供了一个类似 Ports 的软件包构建系统,以便更快速地从外部源构建自定义、可安装的软件包。Debian 不提供 Ports 系统,而是依赖其庞大的二进制仓库。
- Arch 的安装系统仅提供一个最小化的基础系统,在系统配置过程中透明地暴露,而 Debian 的方法,例如使用 apt *tasks* 来安装预选的软件包组,提供了更自动化的配置方法以及几种替代安装方式。
- Arch 通常将软件库与其头文件一起打包,而在 Debian 中,头文件需要单独下载。
- Arch 尽量减少补丁,从而避免了上游无法审查的问题,而 Debian 则更广泛地为其用户打补丁。
Fedora
- Fedora Linux 是 Red Hat® Enterprise Linux 的上游社区发行版。Red Hat 是该项目的主要赞助商,但成千上万的独立开发者也为 Fedora 做出了贡献。软件包和项目在 Fedora 上发布,并通过其自身的测试和质量保证流程,这些功能会迁移到 CentOS Stream,最终被纳入 Red Hat Enterprise Linux 的某个版本,有些最终会被其他发行版采用。Arch 没有固定的发布版本,也不作为另一个发行版的分支,即使 许多其他发行版 都基于 Arch Linux(例如,用于 Steam Deck 的 SteamOS)。
- Fedora 软件包使用 RPM 格式和 DNF 包管理器。Arch 使用 pacman 管理其软件包。两个项目的许多软件包,特别是桌面环境,都被描述为“原生”(vanilla),没有定制。
- 由于其对自由软件的承诺,Fedora 在官方仓库中不包含非自由软件,但第三方仓库可用于此类软件包。Arch 在对待非自由软件方面更为宽松,将判断权留给用户。
- Fedora 使用图形化的 Anaconda 安装程序,并提供许多安装映像,包括一个“所有”专家选项,该选项可以实现从基础系统安装到您选择的完整桌面环境。Fedora 的“spins”也提供了替代的特定桌面环境组合,每种都包含适量的默认软件包。另一方面,Arch 被设计为从最小化的基础系统命令行组装,因此提供简单的脚本来简化过程。
- Fedora 有一个计划好的约 6 个月的发布周期,但官方支持通过 DNF system-upgrade 插件进行离散版本升级。Arch 是一个滚动发布系统。
- Arch 具有 Ports 系统,而 Fedora 则没有。
- Arch 和 Fedora 都面向经验丰富的用户和开发者。两者都强烈鼓励用户为项目开发做出贡献。
- Fedora 因集成 SELinux、GCJ 编译的软件包(无需 Oracle 的 JRE)以及大量的上游贡献而获得了广泛的社区认可;Red Hat 及其延伸的 Fedora 开发者,与其他任何项目相比,贡献了最高比例的 Linux 内核代码。
- Arch Linux 提供了被广泛认为是条理最清晰、最全面的发行版 wiki。Fedora wiki 则按“wiki”一词的原始含义使用,即一种快速在开发者、测试者和用户之间交换信息的方式。它并不像 Arch 的 wiki 那样旨在成为最终用户知识库。Fedora 的 wiki 更像是问题跟踪器或公司 wiki。
Slackware
- Slackware 使用 BSD 风格的 init 脚本,而 Arch 使用 systemd。
- Arch 在 pacman 中提供了一个包管理系统,与 Slackware 的标准工具不同,它支持自动依赖解析,并允许更自动化的系统升级。Slackware 用户通常更喜欢其手动依赖解析的方法,并引用它提供的系统控制级别,以及 Slackware 预装的优秀库和依赖项。
- Arch 是一个滚动发布系统。Slackware 在其发布周期上被认为更保守,偏爱经过验证的稳定软件包。在这方面,Arch 更为“前沿”。
- Arch Linux 在其官方仓库中提供了数万个二进制软件包,而 Slackware 的官方仓库则相对适中。
- Arch 提供了 Arch 构建系统,一个实际的类 Ports 包构建系统,以及 AUR,一个由用户贡献的大量 PKGBUILD 集合。Slackware 在 slackbuilds.org 提供了一个类似的、但更精简的系统,这是一个 Slackbuild 的半官方仓库,类似于 Arch 的 PKGBUILD。Slackware 用户通常会对 Arch 的大多数方面感到非常适应。
新手友好型发行版
这些新手友好型发行版有时被称为“新手发行版”,它们有很多相似之处,尽管 Arch 与它们有很大不同。如果您想通过从一个小基础开始学习 GNU/Linux,Arch 可能是更好的选择,因为 Arch 的安装软件包很少。发行版之间的具体差异如下所述。
Ubuntu
- Ubuntu 是一个流行的基于 Debian 的发行版,由 Canonical Ltd. 提供商业赞助,而 Arch 是一个从头开始构建的独立开发系统。
- 这两个项目有非常不同的目标,并且面向的用户群体也不同。Arch 专为喜欢 DIY 方法的用户设计,而 Ubuntu 提供预配置的系统。Arch 从基础安装开始就呈现出更简单的设计,依赖用户根据自己的具体需求进行定制。许多 Arch 用户曾从 Ubuntu 开始,最终迁移到 Arch。
- Arch 的开发不偏向任何一个特定的用户界面,超出其社区支持的范围。此外,Canonical 的商业性质导致了一些有争议的决定,例如在 Unity 的 *Dash* 菜单中包含广告、开发、推广和集成 Snap 和闭源的 Snap Store,以及用户数据收集。Arch 是一个独立的、社区驱动的项目,没有任何商业目的。
- Ubuntu 每 6 个月进行一次离散版本更新,而 Arch 是一个滚动发布系统。
- Arch 提供了一个类 Ports 的软件包构建系统和 Arch 用户仓库,用户可以在其中共享用于 pacman 包管理器的源代码包。Ubuntu 使用更复杂的 apt 和 Snap,并允许通过 个人软件包归档 (PPA) 再分发二进制软件包。
- 两个社区在某些方面也有所不同。Arch 社区规模小得多,并且强烈鼓励贡献给发行版。相比之下,Ubuntu 社区规模相对较大,因此可以容忍更大比例的用户不积极参与开发、打包或仓库维护。
Linux Mint
- Linux Mint 最初是作为 Ubuntu 的衍生版诞生的,后来增加了 LMDE(Linux Mint Debian Edition),该版本则基于 Debian。另一方面,Arch 是一个独立的发行版,依赖于其自己的 构建系统 和 仓库。
- Mint 包含多个用于简化维护的图形化工具,称为 *MintTools*。Arch 只提供简单的命令行工具,如 pacman,并将系统管理留给用户自行组织。
- Mint 的新版本每六个月发布一次,大约在 Ubuntu 发布后一个月。每个版本都基于最新的 Ubuntu LTS,并支持五年。Linux Mint Debian Edition (LMDE) 基于 Debian Stable,仅接收 Mint 软件包和安全更新。而 Arch 是一个完整的滚动发布发行版。
openSUSE
openSUSE 源于最初的 SUSE Linux,并由 SUSE(SUSE Enterprise Linux 的制造商)赞助。SUSE Enterprise Linux Desktop (SLED) 基于 openSUSE Tumbleweed,并与 openSUSE Leap 共享通用代码库。
- OpenSUSE 使用 Zypp 包管理器(命令行下为 *zypper*)、RPM 包格式及其备受好评的 YaST2 GUI 配置工具。Arch 使用 pacman 管理 *.tar.zst* 包,并且不提供图形化配置工具。
- openSUSE 提供 2 种不同的版本
- Leap 是 openSUSE 的长期支持版本,具有离散发布。
- Tumbleweed 是 openSUSE 的滚动发布版本。
- 相比之下,Arch 严格采用滚动发布模式,不提供离散发布版本。
- Arch 提供的是一个最小化的基础系统安装,而不是一个完整的桌面环境。因此,对于想要更 GUI 驱动的环境、自动配置或开箱即用功能,同时仍允许所有发行版都具备的定制性的用户来说,openSUSE 可能更合适。
Mandriva/Mageia
Mandriva Linux(前身为 Mandrake Linux)于 1998 年创建,目标是让 GNU/Linux 对每个人都易于使用。
- Mandriva 基于 RPM,并使用 *urpmi* 包管理器。
- Mageia 是 Mandriva 的一个分支,由前 Mandriva 员工创建,它反对其母发行版的商业定位,是一个非营利性、社区驱动的项目。
Arch 比 Mandriva 或 Mageia 采取更简单的方法,是文本驱动的,依赖于更多手动配置,并且面向中高级用户。
BSD 系列
- BSD 系列共享一个共同的起源,直接源自加州大学伯克利分校为生产可自由再分发的、免费的 UNIX 系统所做的工作。它们不是 GNU/Linux 发行版,而是类 UNIX 操作系统,并且源自原始的 AT&T UNIX 代码。
- Arch 和 BSD 系列共享紧密集成的基础和 Ports 系统的概念。然而,与 Arch 等 GNU/Linux 发行版不同,BSD 系列的内核和用户空间程序(如 shell 和 `ls`、`cp`、`cat`、`ps` 等核心实用程序)是在同一个源代码仓库中共同开发的。
- BSD 许可证 是宽松的,而 GPL 则要求衍生作品也必须在相同许可证下发布。Arch 在 GPL 下发布。
- 要了解更多关于 BSD 变种的信息,请参阅 Wikipedia:Comparison of BSD operating systems。
参见
- DistroWatch - Linux 发行版新闻和评测