OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 057

Pacman Hook、AUR 与构建安全

在包管理自动化中区分官方仓库、AUR 构建脚本与隔离环境的职责。

所在专题Arch Linux ↗
约 5 分钟阅读开始阅读

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 形成不受支持的部分升级。

参考与延伸

  1. ArchWiki:Pacman ↗
  2. ArchWiki:Arch User Repository ↗
  3. ArchWiki:DeveloperWiki:Building in a clean chroot ↗
  4. ArchWiki:Reproducible builds ↗
  5. alpm-hooks(5) ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

Arch Linux

  1. 01Arch Linux 的哲学与安装规划
  2. 02内核管理、systemd-boot 与 UKI
  3. 03Pacman Hook、AUR 与构建安全
  4. 04Btrfs 子卷布局与 Snapper 快照
  5. 05LUKS2、Secure Boot 与 TPM2 加固
  6. 06性能选择与日常维护清单
  7. 07Pacman 常用命令与参数记忆
  8. 08Pacman 下载慢的诊断与镜像选择
  9. 09informant:Arch 新闻与 Pacman Hook
  10. 10Arch Linux 与 Btrfs:手动安装和 archinstall
  11. 11GNOME 桌面、输入法与快照配置
  12. 12GNOME 笔记本管理与桌面美化
  13. 13Arch Linux 的 KVM、GPU 直通与游戏
  14. 14Arch 桌面的交换空间、内核与排障
CONTINUE READING / 下一篇Btrfs 子卷布局与 Snapper 快照

为系统、用户数据和日志分别规划状态边界,再配置可恢复的快照流程。