Arch Linux 以其极简主义、KISS(Keep It Simple, Stupid)原则和滚动更新(Rolling Release)模式著称。对于新手来说,安装 Arch Linux 只是第一步,真正的挑战在于后续的系统维护与更新。一个维护良好的 Arch 系统不仅能提供最新的软件特性,还能保证系统的稳定性和安全性。
本指南将深入探讨 Arch Linux 的日常维护、更新策略、系统优化以及常见问题的排查方法,帮助你从新手进阶为精通 Arch 的系统管理员。
一、 Arch Linux 的包管理基础
在深入维护之前,必须熟练掌握
pacman
和 AUR 助手(如
yay
或
paru
)的使用。Arch 的维护工作几乎全部围绕着包管理器展开。
1.1 Pacman 常用命令速查
pacman
是 Arch Linux 的官方包管理器,用于安装、更新和删除软件包。
同步数据库:
sudo pacman -Sy
注意:仅同步数据库而不更新系统是不推荐的做法,容易导致部分依赖损坏。
系统完整更新(最重要命令):
sudo pacman -Syu
这是 Arch 用户每天都会运行的命令。
-S
代表同步(Sync),
-y
刷新数据库,
-u
升级所有过期包。
搜索包:
# 搜索官方仓库
pacman -Ss 关键词
# 搜索已安装的包
pacman -Qs 关键词
清理系统(垃圾回收):
# 删除未使用的依赖(Orphaned packages)
sudo pacman -Rns $(pacman -Qdtq)
# 清理包缓存(保留最近3个版本,其余删除)
sudo pacman -Sc
1.2 AUR(Arch User Repository)维护
AUR 是 Arch 强大的社区仓库,包含成千上万的软件。使用 AUR 助手(以
yay
为例)可以简化操作。
使用 yay 更新系统(包含 AUR 包):
yay -Syu
yay
会先更新官方仓库,再更新 AUR 包,最后处理 AUR 包的
.pacnew
文件。
清理 AUR 缓存:
yay -Yc
二、 系统日常维护策略
Arch Linux 是滚动更新的,这意味着你不需要像 Ubuntu 那样在特定版本之间进行“大升级”。但为了保持系统健康,需要遵循一些最佳实践。
2.1 更新频率与习惯
勤更新,勿拖延:
建议每周至少更新一次。长时间不更新(例如超过两个月)会导致软件包版本跨度太大,增加更新失败的风险(特别是遇到库文件如 glibc, python 更新时)。
检查 Arch Linux 新闻:
在执行
pacman -Syu
之前,务必访问
Arch Linux 官方新闻
。如果有重大更新(如手动干预步骤),官方会发布公告。
例子:
如果看到 “The
iana-etc
package has been split into
iana-etc
and
iana-etc-obsolete
” 这样的新闻,你需要根据提示处理冲突。
2.2 处理
.pacnew
和
.pacsave
文件
当软件更新时,如果配置文件被修改过,pacman 不会直接覆盖你的修改,而是生成一个
.pacnew
文件。忽略这些文件会导致配置陈旧或软件运行异常。
查找 .pacnew 文件:
find /etc -name “*.pacnew”
使用 pacdiff 工具:
Arch 提供了
pacdiff
工具(包含在
pacman-contrib
包中),它可以扫描并帮助你合并配置。
sudo pacdiff
它会使用
vimdiff
或你设置的合并工具(如
meld
,
kdiff3
)让你对比原配置和新配置,决定保留哪些更改。
2.3 清理系统
删除孤立包(Orphans):
卸载软件后,其依赖可能残留。
sudo pacman -Rns $(pacman -Qdtq)
清理包缓存:
pacman 会把所有下载的包保存在
/var/cache/pacman/pkg/
。如果不清理,这会占用大量磁盘空间。
# 保留当前安装版本的缓存,删除其他的
sudo pacman -Sc
# 激进清理,只保留最近3个版本(慎用,回滚困难)
paccache -r
三、 系统快照与回滚:Btrfs 与 Timeshift
虽然 Arch 很稳定,但人总会犯错。配置 Btrfs 文件系统并使用 Timeshift 是防止系统“变砖”的最佳保险。
3.1 配置 Btrfs 文件系统
如果你在安装 Arch 时选择了 Btrfs(推荐),你可以利用其子卷(Subvolumes)功能。
创建快照:
# 手动创建快照
sudo btrfs subvolume snapshot / /snapshots/backup-$(date +%Y%m%d)
设置定期快照(Snapper):
# 安装 snapper
sudo pacman -S snapper
# 为根目录创建配置
sudo snapper -c root create-config /
# 编辑 /etc/snapper/configs/root 设置定时任务
3.2 使用 Timeshift 进行系统恢复
Timeshift 是一个图形化工具,类似于 Windows 的系统还原点。
安装:
sudo pacman -S timeshift
配置:
打开 Timeshift,选择 Btrfs 模式(如果你的文件系统是 Btrfs)或 Rsync 模式。
恢复:
如果更新后系统无法启动,使用 Arch Live USB 启动,挂载分区,安装 Timeshift,然后点击“Restore”即可回滚到更新前的状态。
四、 常见问题排查(Troubleshooting)
在 Arch Linux 的使用过程中,遇到问题是非常正常的。掌握排查逻辑比死记硬背命令更重要。
4.1 Pacman 数据库锁定
现象:
提示
error: failed to update database (database is locked)
。
原因:
另一个 pacman 进程正在运行,或者上次更新异常中断导致锁文件残留。
解决方法:
确认没有其他终端在运行 pacman 或 yay。
删除锁文件:
sudo rm /var/lib/pacman/db.lck
如果问题依旧,重启电脑通常能解决。
4.2 更新时出现 “File exists in filesystem” 错误
现象:
更新时 pacman 报错,提示某个文件已经存在,导致无法安装。
原因:
该文件原本属于某个包,但后来被其他软件安装或手动创建,导致 pacman 无法覆盖。
解决方法:
情况 A:
确认该文件属于哪个包。
pacman -Qo /path/to/file
如果不属于任何包,说明是新文件冲突。
情况 B:
强制覆盖(慎用)。
sudo pacman -S 包名 –overwrite ‘*’
或者先删除冲突文件:
sudo rm /path/to/file
sudo pacman -Syu
4.3 密钥环(Keyring)问题
现象:
更新时提示
PGP signature invalid
或
invalid or corrupted package
。
原因:
系统时间不正确,或者 GPG 密钥过期。
解决方法:
强制更新密钥环:
sudo pacman -Sy archlinux-keyring
sudo pacman -Su
如果依然报错,尝试同步时间:
sudo timedatectl set-ntp true
4.4 内核更新后无法启动(NVIDIA 用户必看)
现象:
更新内核后,重启黑屏或无法加载图形界面。
原因:
内核版本升级,但 NVIDIA 驱动模块未重新编译以适配新内核。
解决方法:
在 GRUB 界面选择 “Advanced options for Arch Linux”,选择
旧版本内核
启动。
进入系统后,重新安装 NVIDIA 驱动:
sudo pacman -S nvidia nvidia-utils
或者如果你使用 DKMS 版本(推荐):
sudo pacman -S nvidia-dkms
DKMS 会在内核更新时自动重新编译模块,避免此问题。
4.5 Pacman 错误:’signature is unknown trust’
现象:
error: package_name: signature from “User Name
原因:
你的本地密钥库中没有该签名者的公钥。
解决方法:
# 导入缺失的密钥
sudo pacman-key –recv-keys KEY_ID
# 签名密钥(将 KEY_ID 替换为报错信息中的 ID)
sudo pacman-key –lsign-key KEY_ID
4.6 空间不足导致更新失败
现象:
not enough free space
。
原因:
/var/cache/pacman/pkg/
积累了太多旧包,或者
/boot
分区被旧内核填满。
解决方法:
清理包缓存:
sudo pacman -Sc
清理 /boot 分区:
Arch Linux 默认保留当前和前一个内核版本。如果你手动编译过内核或者安装了太多内核,需要手动删除旧内核文件。
查看当前内核:
uname -r
列出 /boot 目录下的文件,删除版本号较旧的
vmlinuz
,
initramfs
,
System.map
文件(
注意:不要删除当前正在使用的版本!
)。
五、 进阶维护:日志与系统监控
当系统出现不明故障时,日志是最好的线索。
5.1 Systemd Journal 日志分析
Arch 使用 systemd 作为初始化系统,其日志管理工具是
journalctl
。
查看本次启动日志:
journalctl -b
查看报错日志:
journalctl -p 3 -xb
-p 3
表示 priority 3 (Error),
-x
显示详细解释,
-b
仅显示本次启动。
查看特定服务日志:
journalctl -u NetworkManager.service –since today
5.2 系统资源监控
htop:
比 top 更好用的进程查看器。
sudo pacman -S htop
htop
ncdu:
磁盘占用分析神器,比
du -sh *
直观得多。
sudo pacman -S ncdu
ncdu /
六、 总结
Arch Linux 的维护核心在于
“主动”
和
“轻量”
。
定期更新
:不要让系统落后太久。
阅读文档
:更新前看 Arch News。
善用工具
:使用
pacdiff
处理配置,使用
Timeshift
做备份,使用
htop
和
journalctl
排查问题。
保持清洁
:定期清理孤立包和缓存。
只要遵循这些原则,Arch Linux 将会是一个极其稳定、高效且完全受你掌控的操作系统。遇到问题不要慌张,99% 的问题都能通过搜索引擎和 Arch Wiki 找到解决方案。