常见问题解答
常规
什么是 Arch Linux?
请参阅 Arch Linux 词条。
为什么我不想使用 Arch?
在以下情况下,你可能不想使用 Arch:
- 你没有能力/时间/意愿去使用一个“DIY”风格的 GNU/Linux 发行版。
- 你需要支持 x86_64 以外的架构。
- 你坚持只使用符合 GNU 定义的仅包含自由软件的发行版。
- 你认为操作系统应该自动配置、开箱即用,并在安装介质中包含一整套默认软件和桌面环境。
- 你不想要一个滚动更新的 GNU/Linux 发行版。
- 你对目前的操作系统很满意。
为什么我想使用 Arch?
因为 Arch 是最好的。
Arch 支持哪些架构?
Arch 仅支持 x86_64(有时也称为 amd64)架构。对 i686 的支持已于 2017 年 11 月停止 [1]。
存在针对 i686 架构 [2] 和 ARM CPU [3] 的衍生发行版,它们各有其社区频道。它们不受 Arch Linux 官方支持。
如果你希望 Arch 支持其他架构,可以协助现有的移植工作或开启自己的项目。请参阅 参与贡献#帮助将 Arch Linux 移植到其他架构。
Arch 是否遵循 Linux 基金会的文件系统层次结构标准 (FHS)?
Arch Linux 为使用 systemd 服务管理器的操作系统遵循其文件系统层次结构。请参阅 file-hierarchy(7) 了解各目录及其用途的说明。特别地,/bin、/sbin 和 /usr/sbin 是指向 /usr/bin 的符号链接,/lib 和 /lib64 是指向 /usr/lib 的符号链接。
我是 GNU/Linux 的纯萌新。我该使用 Arch 吗?
如果你是初学者并想使用 Arch,你必须愿意投入时间学习新系统,并接受 Arch 被设计为一个“DIY”发行版的事实;由用户自己组装系统。
在寻求帮助之前,请通过搜索网络、论坛和 Arch Wiki 提供的精美文档来进行独立研究。这些资源之所以提供给你是有原因的。成千上万小时的志愿服务时间被投入到这些优秀信息的汇编中。
另见 Arch 术语#RTFM 和 安装指南。
Arch 的设计目标是服务器?桌面?还是工作站?
Arch 并非针对任何特定的用途而设计。相反,它是为特定类型的用户设计的。Arch 针对的是享受其“DIY”特质并能利用它来塑造符合其独特需求系统的胜任用户。因此,在目标用户手中,Arch 几乎可以用于任何目的。许多人在桌面和工作站上都使用 Arch。当然,archlinux.org、aur.archlinux.org 以及几乎所有 Arch 的基础设施都运行在 Arch 上。
我真的很喜欢 Arch,但开发团队需要实现功能 X
参与进来,向社区贡献你的代码/解决方案。如果它受到社区和开发团队的高度评价,或许会被合并。Arch 社区在代码和工具的贡献与分享中蓬勃发展。
新版本什么时候发布?
Arch Linux 的发布版仅仅是用于安装或救援的 Live 环境,其中包括 base 元软件包和其他一些软件包。发布版通常在每月的前半部分发行。
Arch Linux 是一个稳定的发行版吗?会经常出故障吗?
最终由用户对其滚动更新系统的稳定性负责。用户决定何时升级,并在需要时合并必要的更改。如果用户向社区求助,通常会及时得到帮助。Arch 与其他发行版在这方面的区别在于 Arch 是真正的“DIY”发行版;对“系统滚挂”的抱怨是误导且无益的,因为上游的更改不属于 Arch 开发者的责任。
请参阅 系统维护 词条,了解如何使 Arch Linux 系统尽可能稳定的技巧。
Arch 需要更多曝光(即广告)
Arch 已经获得了大量的媒体曝光。Arch Linux 的目标不是做大;相反,有机、可持续的增长会在目标用户群中自然发生。
Arch 需要更多开发者
可能是这样。欢迎志愿贡献你的时间!访问 论坛、IRC 频道 和 邮件列表,看看有哪些工作需要完成。详见 参与贡献。
安装
Arch 需要一个安装程序。或许是图形界面 (GUI) 安装程序?
现在已提供一个带有文本界面的引导式安装程序。详见 archinstall。
我安装了 Arch,现在进入了 shell!然后呢?
请参阅 常规推荐。
我应该使用哪种桌面环境或窗口管理器?
由于有很多选择,请选择最适合你需求的一个。可以参考 桌面环境 和 窗口管理器 词条。
在众多的“极简”发行版中,Arch 有何独特之处?
请参阅 Arch 与其他发行版的比较。
系统维护
另见 系统维护。
为什么我的网速比其他操作系统慢?
你的网络配置正确吗?请参考 网络配置 词条。对于高级设置,你可能还需要查看 流量整形 (Traffic shaping)。
最常用的内核之一 linux 往往比其他更稳定的 Linux 发行版的内核更新。因此,你可能会极少数地遇到 内核退化 (regression) 或驱动程序错误,尤其是在使用 Wi-Fi 时。请注意,绝大多数此类错误并非 Arch Linux 特有的,因为 Arch Linux 只应用最基本的补丁。这些问题需要提交给上游。请参阅 #我发现软件包 X 有错误。我该怎么办?。
为什么 Arch 占用了我所有的内存 (RAM)?
本质上,未使用的内存就是浪费的内存。
许多新用户注意到 Linux 内核处理内存的方式与他们习惯的不同。由于从内存访问数据比从存储驱动器快得多,内核会在内存中缓存最近访问的数据。只有当系统开始耗尽可用内存并需要加载新数据时,缓存数据才会被清除。
我们可以通过 free 命令来区分其差异
$ free -h
total used free shared buff/cache available Mem: 377Gi 40Gi 146Gi 1.1Gi 196Gi 337Gi Swap: 377Gi 1.1Gi 376Gi
区分“free(空闲)”和“available(可用)”内存非常重要。在上面的示例中,一个拥有 377 GiB 总内存的系统看起来使用了超过一半,只有 146 GiB 的空闲内存。然而,其中 196 GiB 是“buff/cache(缓冲/缓存)”。仍有 337 GiB 可用于启动新程序而无需使用交换分区 (swap)。详见 free(1)。这一切的结果?性能!
如果你对此有好奇心,请参阅这篇精彩的文章。还有一个专门解释这一困惑的网站:https://www.linuxatemyram.com/。
我的剩余空间都去哪了?
这个问题的答案取决于你的系统。有一些 优秀的工具 可以帮助你找到答案。
为什么我无法登录?
你是否输错了密码,或者在 15 分钟内连续三次取消了 sudo 命令?如果是这样,你触发了防止暴力破解的机制:详见 安全性#在三次登录失败后锁定用户。
Arch 会“打电话回家”吗?
简短的回答?不。
更详细的说明:
- NetworkManager 的用户应该知道它会进行自动连通性检查。默认的连通性检查 URL 由 Arch 提供,并承诺不记录任何访问。
- 网络时间协议 (NTP) 客户端在默认配置下会使用由 NTP Pool Project 提供的厂商 NTP 服务器池(遵循其规则)。
- 正如 pacman/软件包签名#定期升级系统 中的注释所述,一个 systemd 定时器每周运行一次,以更新已信任密钥的新签名。那里也不会记录任何访问。
- 镜像列表更新工具 Reflector 从 archlinux.org 下载镜像列表。在 Live 安装环境中,它默认启用,并在网络连接建立后立即运行。
你可以通过参与 pkgstats 项目来主动“打电话回家”,该项目收集匿名的软件包流行度数据,以帮助 Arch 开发者确定工作重点。
软件包管理
请参阅 pacman、pacman/技巧和提示 以及 官方仓库 页面以获取更多答案。
我发现软件包 X 有错误。我该怎么办?
首先,你需要弄清楚这个错误是否是 Arch 团队可以修复的。通常不是(例如 Firefox 崩溃可能是 Mozilla 团队的错);这被称为上游错误,见 Bug 报告指南#上游还是 Arch?。如果是 Arch 的问题,你可以采取以下步骤:
- 在论坛中搜索相关信息。看看是否有人也注意到了这个问题。
- 在 GitLab 上的 Arch Linux Bug 追踪器 提交带有详细信息的 Bug 报告。
- 如果你愿意,可以发一个论坛帖子详细说明问题以及你已经报告过的事实。这将有助于防止很多人报告同一个错误。
Arch 软件包需要使用独特的命名约定。“.pkg.tar.zst”太长且/或容易混淆
这已在 Arch 邮件列表中讨论过。有人建议使用 .pac 文件扩展名,但目前没有更改软件包扩展名的计划。正如 Arch 开发者之一 Tobias Kieslich 所说,“软件包就是一个 [压缩的] tar 包!任何支持 tar 的程序都可以打开、查看和操作它。而且,大多数程序会自动正确检测 mime 类型。”
Pacman 需要一个库,以便其他程序可以轻松访问软件包信息
Pacman 是 libalpm(3)(“Arch Linux 软件包管理”库)的前端,这使得编写替代前端(如 GUI 前端)成为可能。
Pacman 需要功能 X!
如果你认为一个想法有价值,可以选择在 pacman-dev 上讨论。也可以在 https://gitlab.archlinux.org/pacman/pacman/-/issues 查看现有的功能请求。
然而,为 pacman 或 Arch Linux 添加功能的最佳方式是亲自实现它。补丁或代码可能会也可能不会被正式采纳,但或许其他人会感激、测试并为你的努力做出贡献。
我刚安装了软件包 X。如何启动它?
如果你使用的是 KDE 或 GNOME 等桌面环境,如果程序带有 桌面入口 (desktop entry),它应该会自动出现在菜单中。如果你尝试从终端运行程序且不知道二进制文件名,请使用:
$ pacman -Qlq package_name | grep /usr/bin/
为什么官方仓库中每个共享库只有一个版本?
一些发行版(如 Debian)将不同版本的共享库打包成不同的软件包:libfoo1、libfoo2、libfoo3 等。这样可以在同一系统上安装针对不同版本 libfoo 编译的应用程序。
对于像 Arch 这样的发行版,官方仅支持最新的打包版本。通过停止对过时软件的支持,包维护者能够花更多时间确保最新版本按预期工作。一旦上游提供了共享库的新版本,它就会被添加到仓库中,并重新构建受影响的软件包以使用新版本。
如果我运行全系统升级,某个共享库有更新,但依赖它的应用程序没有更新怎么办?
这种情况根本不应该发生。假设一个名为 foobaz 的程序在官方仓库中,并且针对新版本的共享库 libbaz 成功构建,它将与 libbaz 一起更新。然而,如果它构建失败,foobaz 软件包将具有版本化的依赖关系(例如 libbaz 1.5),并在 libbaz 升级期间由于冲突被 pacman 删除。
如果 foobaz 是你自己构建并从 AUR 安装的软件包,你应该针对新版本的 libbaz 重新构建 foobaz。如果构建失败,请向 foobaz 的开发者报告错误。
仓库中是否存在内核重大更新,而部分驱动程序包尚未更新的情况?
不,这是不可能的。重大内核更新(例如从 linux 3.5.0-1 到 linux 3.6.0-1)总是伴随着所有官方支持的内核驱动程序包的重新构建。另一方面,如果你的系统中安装了不受支持的驱动程序包(例如来自 AUR),如果你不针对新内核重新构建它,内核更新可能会让你出问题。用户有责任更新他们安装的任何不受支持的驱动程序包。
升级前该做什么?
请遵循 系统维护#升级系统 章节。
软件包更新已发布,但 pacman 显示系统已是最新
pacman 镜像不会立即同步。更新可能需要超过 24 小时才能提供给你。唯一的选择是保持耐心或更换另一个镜像。镜像状态 (MirrorStatus) 可以帮助你识别最新的镜像。
上游项目 X 发布了新版本。Arch 软件包需要多长时间更新到该新版本?
软件包更新将在准备就绪时发布。具体时间可以短至上游发布次要错误修复更新后的几个小时,也可以长至大型软件包组重大更新后的几周。从上游新版本到 Arch 发布新软件包的时间取决于具体的软件包以及包维护者的空闲情况。此外,某些软件包会在 testing 仓库中停留一段时间,这可能会延长软件包更新的时间。包维护者 尝试快速工作以将稳定的更新带入仓库。如果你在官方仓库中发现某个软件包已过时,请前往 软件包网站 上的该软件包页面并将其标记为过时 (flag it)。
如果我需要已安装库的旧版本,可以直接创建指向新版本的软链接吗?
如果你运气好,它可能会在一段时间内有效。尽管如此,这并不是一个妥当的解决方案,因为:
- 库的版本不会随机更改 —— API/ABI 很可能已经改变(可能删除了部分内容),而这些变化是否影响使用完全取决于运气。
- 符号链接不会被软件包管理器跟踪。对于一上来就尝试对系统库文件进行“黑客”操作的新手来说,面临着造成无法诊断/修复的意外更改的最大风险,而软件包管理器可以防止这种情况发生。
- 另一种稍微好点的办法是将旧库文件丢进文件系统而不进行跟踪,但这样做容易被遗忘,且无法察觉/修复潜在的安全漏洞。
相反,你应该使用/编写一个 compat(兼容性)软件包,由它提供所需的库版本。
64 位
如何确定我的处理器是否兼容 x86_64?
如果你的处理器兼容 x86_64,在 /proc/cpuinfo 中会有 lm(长模式)标志。例如:
$ grep -w lm /proc/cpuinfo
在 Windows 下,使用免费软件 CPU-Z 有助于确定你的 CPU 是否兼容 64 位。具有 AMD 指令集“AMD64”或 Intel 解决方案“EM64T”的 CPU 应该与 x86_64 发布版和二进制包兼容。
为什么选 64 位?
在大多数情况下它更快,而且作为一个额外的好处,由于 地址空间布局随机化 (ASLR) 与 位置无关代码 (PIC) 以及 NX Bit 的结合,它天生更安全,而这些在普通 i686 内核中由于禁用了 物理地址扩展 (PAE) 而不可用。如果你的电脑有超过 4 GiB 的内存,只有 64 位操作系统才能充分利用它。
程序员也越来越不关心 32 位(“遗留”),因为“新”的 x86 CPU 通常都支持 64 位扩展。
我们可以列出更多理由来告诉你避开 32 位,但从内核、用户空间到单个程序,如今要列出 64 位表现更优的每一个细节已经不太现实了。