Arch 与其他发行版的比较
本页面旨在将 Arch Linux 与其他著名的 GNU/Linux 发行版及类 UNIX 操作系统进行对比。随后的摘要提供了简要描述,可能有助于用户决定 Arch Linux 是否符合其需求。虽然评测和描述很有参考价值,但亲身体验始终是对比发行版的最佳方式。
如需更完整的对比,请参见 Wikipedia:操作系统对比 以及 Wikipedia:Linux 发行版对比。
下文仅对比 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 编译系统 (ABS) 无缝协作。CRUX 使用一个名为 prt-get 的社区贡献系统,结合其自身的 ports 系统来处理依赖解析,但所有软件包都从源码构建(尽管 CRUX 的基础安装是二进制的)。
- Arch 和 CRUX 官方都仅支持 x86_64 架构。
- Arch 拥有庞大的二进制软件包仓库以及 Arch 用户软件仓库 (AUR)。CRUX 除了一个规模适中的社区仓库外,提供了一个更精简的官方支持 ports 系统。
LFS
- LFS (即 Linux From Scratch) 纯粹以文档形式存在。该书指导用户获取功能完备的 GNU/Linux 系统所需最小基础包集的源代码,并展示如何从零开始手动编译、打补丁和配置。LFS 达到了极致的精简,并提供了构建和定制基础系统的卓越教育过程。
- LFS 不提供在线仓库;源码需手动获取、编译和安装(存在几种手动的包管理方法,在 LFS Hints 中有提及)。因此,除非你是团队协作,否则 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 标志 和编译器标志直接从源代码构建的。
- 自 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 概念,包括 文件系统层次结构标准 (FHS)。例如,在传统发行版中分布在不同目录下的许多文件,在 Guix System 中会被统一放置在
/gnu/store/下的某个位置。 - Arch 有时会分发非自由软件(通常是驱动),而 Guix System 仅分发自由软件并受到 自由软件基金会 (FSF) 的认可——尽管为 Guix 提供非自由软件的替代仓库也是 存在 的。
- Arch 期望用户直接配置安装的软件包,而 Guix System 鼓励使用 Guile Scheme 进行全局系统配置,进而由其 实例化 出配置文件。
常规
这些发行版提供了广泛的优势和长处,并能满足大多数操作系统的用途。
Debian
- Debian 是最大的上游 Linux 发行版,拥有庞大的社区,并设有稳定版 (stable)、测试版 (testing) 和不稳定版 (unstable) 分支,提供数十万个 软件包。Arch 的二进制包数量相对较少,但如果计入 AUR,两者的数量旗鼓相当。
- Debian 对自由软件有着更坚定的立场,但仍在非自由仓库中包含非自由软件。Arch 在 GNU 定义的“非自由软件包”方面更为宽容,因此包含范围更广。
- Debian 专注于稳定版分支的严格测试,该分支会被“冻结”并获得长达 五年 的支持。Arch 的软件包比 Debian 稳定版更新,更接近 Debian 不稳定版,且没有固定的发布周期。
- 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 安装程序,并提供多种安装镜像,包括一个“everything”专家选项,方便从基础系统安装一直到自选的完整桌面环境。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 那样旨在成为最终用户的知识库。Fedora 的 Wiki 更像是一个问题追踪器或企业 Wiki。
Slackware
- Slackware 使用 BSD 风格的 init 脚本,而 Arch 使用 systemd。
- Arch 在 pacman 中提供了一套包管理系统,与 Slackware 的标准工具不同,它提供自动依赖解析,并允许更自动化的系统升级。Slackware 用户通常更喜欢手动依赖解析的方法,理由是这赋予了他们极高的系统控制权,且 Slackware 提供了极为出色的预装库和依赖环境。
- Arch 是滚动更新系统。Slackware 在发布周期上被认为更为保守,偏好经过验证的稳定软件包。在这方面,Arch 更趋向于前沿 (bleeding-edge)。
- Arch Linux 在其官方仓库中提供了数千个二进制软件包,而 Slackware 的官方仓库则相对精简。
- Arch 提供了 Arch 编译系统 (ABS),这是一套真正的类 ports 系统,还拥有由用户贡献的庞大 PKGBUILD 集合——AUR。Slackware 在 slackbuilds.org 提供了一个类似但更精简的系统,这是一个半官方的 Slackbuilds 仓库,这些脚本类似于 Arch 的 PKGBUILD。Slackware 用户通常会对 Arch 的大部分方面感到非常适应。
初学者友好
初学者友好的发行版(有时被称为“新手发行版”)有很多相似之处,尽管 Arch 与它们截然不同。如果你想通过从精简的基础环境开始构建来学习 GNU/Linux,Arch 可能是更好的选择,因为 Arch 安装的软件包数量相对较少。下文描述了各发行版之间的具体差异。
Ubuntu
- Ubuntu 是一款流行的基于 Debian 的发行版,由 Canonical Ltd. 商业赞助,而 Arch 是一款独立开发、从零开始构建的系统。
- 这两个项目有着截然不同的目标,针对的用户群体也不同。Arch 专为渴望“自己动手”的用户设计,而 Ubuntu 提供了一个预配置好的系统。Arch 从基础安装开始就呈现出简单的设计,依靠用户根据自身需求进行定制。许多 Arch 用户最初使用的是 Ubuntu,最终迁移到了 Arch。
- 除了社区提供支持的内容外,Arch 的开发并不偏向任何特定的用户界面。此外,Canonical 的商业性质导致他们做出了一些有争议的决定,例如在 Unity 的 Dash 菜单中加入广告,开发、推广和集成 Snap 以及闭源的 Snap 商店,以及用户数据收集。Arch 是一个独立的、社区驱动的项目,没有商业议程。
- Ubuntu 每 6 个月发布一个固定版本,而 Arch 是滚动更新系统。
- Arch 提供类 ports 的软件包构建系统和 Arch 用户软件仓库 (AUR),用户可以在此分享供 pacman 包管理器使用的源码包。Ubuntu 使用更复杂的 apt 和 Snap,并允许通过 个人软件包存档 (PPA) 重新分发二进制包。
- 这两个社区在某些方面也有所不同。Arch 社区规模较小,并强烈鼓励用户为发行版做出贡献。相比之下,Ubuntu 社区规模相对较大,因此可以容纳较大比例不直接参与开发、打包或仓库维护的用户。
Linux Mint
- Linux Mint 最初是作为 Ubuntu 的衍生版诞生的,后来增加了基于 Debian 的 LMDE (Linux Mint Debian Edition)。另一方面,Arch 是一个独立的发行版,依赖于自己的 编译系统 和 仓库。
- Mint 包含几个用于简化维护的图形工具,称为 MintTools。Arch 仅提供简单的命令行工具(如 pacman),并将系统管理交给用户自行组织。
- Mint 的新版本每六个月发布一次,大约在 Ubuntu 发布一个月后。每个版本都基于最新的 Ubuntu LTS,并获得五年的支持。Linux Mint Debian Edition (LMDE) 基于 Debian 稳定版,仅接收 Mint 软件包更新和安全更新。相比之下,Arch 是一个完全滚动的发行版。
openSUSE
openSUSE 源于最初的 SUSE Linux,并由 SUSE(SUSE Enterprise Linux 的开发者)赞助。SUSE Enterprise Linux Desktop (SLED) 基于 openSUSE Tumbleweed,并与 openSUSE Leap 共享通用代码库。
- OpenSUSE 使用 Zypp 包管理器(命令行中为 zypper)、RPM 包格式以及广受好评的 YaST2 图形化配置工具。Arch 使用 pacman 管理 .tar.zst 软件包,不提供图形化配置工具。
- openSUSE 提供两个不同版本:
- Leap 是 openSUSE 的长期支持版本,具有固定版本发布。
- Tumbleweed 是 openSUSE 的滚动更新版本。
- 相比之下,Arch 严格采用滚动更新模式,不提供固定版本。
- Arch 提供的是最小化的基础系统安装,而非完整的桌面环境。因此,对于想要更图形化的环境、自动配置或开箱即用的功能,同时又希望保留在所有发行版上都能实现的可定制性的用户来说,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 不同,GPL 要求衍生作品也必须以相同的许可证发布。Arch 是以 GPL 发布的。
- 欲了解更多关于 BSD 变体的信息,请参见 Wikipedia:BSD 操作系统对比。
参见
- DistroWatch - Linux 发行版新闻与评测