Pacman 的效率与 Hook#
并行下载
在 /etc/pacman.conf 的 [options] 中设置:
[options]
ParallelDownloads = 5可根据带宽和镜像负载调整。并行数量过高不保证更快,可能受到服务器连接或速率限制。
孤儿包提示钩子
在 /etc/pacman.d/hooks/orphan-check.hook 中可配置:
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Checking for orphaned packages...
When = PostTransaction
Exec = /usr/bin/bash -c "/usr/bin/pacman -Qtd || echo 'No orphans found.'"该示例只报告,不删除包。pacman -Qtd 无匹配时会返回非零;脚本中的回退消息也可能掩盖真正的查询失败,自动维护时应记录 stderr 并区分原因。
AUR 助手:Paru 与 Yay#
AUR 提供用户提交的构建脚本,不等于官方仓库的预编译包。AUR 助手不受官方支持,不能替代对 PKGBUILD、安装脚本和变更的审核。
| 工具 | 实现语言 | 使用时应检查 |
|---|---|---|
| Paru | Rust | diff/pager 审阅设置、构建目录、chroot 集成是否启用 |
| Yay | Go | diff/cleanbuild 提示、依赖处理和实际构建模式 |
预览、资源占用和 chroot 支持随版本与配置变化,没有测量不能推断性能优劣。干净构建可避免旧产物干扰,但 CleanBuild 不自动产生安全隔离。
审核与干净构建#
为什么需要审核 PKGBUILD?
PKGBUILD 本身是会执行的 shell 代码,读取文件、联网和运行其他程序都可能发生在构建阶段。不要以 root 运行 makepkg,也不要在含敏感凭据的工作目录中构建未经审核的脚本。
devtools 的 clean chroot
sudo pacman -S devtools
# 在已审阅的 PKGBUILD 所在目录中执行
extra-x86_64-build干净 chroot 的主要用途是让构建依赖及环境一致、避免宿主机已安装包掩盖缺失依赖。它不等同于无网络、无宿主挂载、对恶意代码绝对安全的沙盒。不可信构建可进一步放在专门的虚拟机或受限制的账户/环境中。
makepkg.conf 性能参数
MAKEFLAGS="-j$(nproc)"
COMPRESSZST=(zstd -c -T0 --ultra -20 -)并行编译要结合内存容量调整;高压缩等级会增加打包时间和资源消耗,只有确实需要较小产物时再采用。可在用户级 makepkg 配置中试验,避免把机器相关参数当作所有系统的最佳值。
可复现构建与分发完整性#
可复现构建关注相同输入和环境能否得到相同产物。archlinux-repro 是相关工具之一:
repro --help
# 具体包输入和子命令以已安装工具版本的帮助为准原笔记的 repro verify <package_name> 不能作为跨版本保证。产物一致是可复现性证据;它不单独证明源代码无恶意。包签名验证、可信密钥、源代码审核和独立重建各自承担不同职责。
包管理流程#
graph LR
A[AUR 构建脚本] --> B[审阅来源和变更]
B --> C[干净环境构建]
C --> D[检查包产物]
D --> E[安装并验证行为]
E --> F[管理缓存与更新]同步仓库数据库时应完成全系统升级:sudo pacman -Syu。不要使用 pacman -Sy package 形成不受支持的部分升级。
参考与延伸
- ArchWiki:Pacman ↗
- ArchWiki:Arch User Repository ↗
- ArchWiki:DeveloperWiki:Building in a clean chroot ↗
- ArchWiki:Reproducible builds ↗
- alpm-hooks(5) ↗
根据技术笔记重新整理,示例使用通用名称。
沿专题继续阅读
Arch Linux
- 01Arch Linux 的哲学与安装规划
- 02内核管理、systemd-boot 与 UKI
- 03Pacman Hook、AUR 与构建安全
- 04Btrfs 子卷布局与 Snapper 快照
- 05LUKS2、Secure Boot 与 TPM2 加固
- 06性能选择与日常维护清单
- 07Pacman 常用命令与参数记忆
- 08Pacman 下载慢的诊断与镜像选择
- 09informant:Arch 新闻与 Pacman Hook
- 10Arch Linux 与 Btrfs:手动安装和 archinstall
- 11GNOME 桌面、输入法与快照配置
- 12GNOME 笔记本管理与桌面美化
- 13Arch Linux 的 KVM、GPU 直通与游戏
- 14Arch 桌面的交换空间、内核与排障