Arch Linux 现推出逐位可复现的 Docker 镜像
摘要
Arch Linux 在全新的 "repro" 标签下发布了逐位可复现的 Docker 镜像,用户需在包管理前重新生成 pacman 密钥。
<p><a href="https://lobste.rs/s/wps0js/arch_linux_now_has_bit_for_bit">评论区</a></p>
查看缓存全文
缓存时间: 2026/04/22 19:31
# Arch Linux 现已提供逐比特可复现的 Docker 镜像
来源:https://antiz.fr/blog/archlinux-now-has-a-reproducible-docker-image/ - 2026 年 4 月 21 日,星期二 - 阅读时间 3 分钟
继几个月前我们的 WSL 镜像达成类似里程碑(https://antiz.fr/blog/the-archlinux-wsl-image-is-now-reproducible/)之后,很高兴告诉大家:Arch Linux 现已拥有**逐比特可复现**的 Docker 镜像!
该镜像以新的 `repro` 标签分发(https://hub.docker.com/layers/archlinux/archlinux/repro)。之所以单独设立标签,是因为有一个**明显**的注意事项:为保证可复现性,镜像内的 pacman 密钥环被移除,导致 pacman **开箱即用**时会失效。在找到合适的技术方案前,我们先将这一可复现镜像作为首个里程碑单独发布。
实际使用时,用户需在容器内**重新生成** pacman 密钥环,才能安装或更新软件包。命令如下:
```bash
pacman-key --init && pacman-key --populate archlinux
```
可在首次启动时手动执行,或在 Dockerfile 的 `RUN` 语句中加入(若以此镜像为基础)。
Distrobox 用户可通过预初始化钩子一步完成:
```bash
distrobox create -n arch-repro -i docker.io/archlinux/archlinux:repro \
--pre-init-hooks "pacman-key --init && pacman-key --populate archlinux"
```
镜像的逐比特一致性通过以下方式验证:
- 多次构建的 digest 完全相同(`podman inspect --format '{{.Digest}}'`)
- 使用 [diffoci](https://github.com/reproducible-containers/diffoci) 对比构建结果
完整的复现文档见[此处](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/master/REPRO.md)。
最大的挑战是让 Docker 基础 rootFS 的构建过程**可 deterministic**,我们直接复用了 WSL 镜像的同一套 rootFS 构建系统(https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/commit/7c0340e26358048f3f8ee03b3ab3aea666751712)。Docker 特有的调整主要包括(详见 diffoci 报告):
- 设置 `SOURCE_DATE_EPOCH` 并在 Dockerfile 的 `org.opencontainers.image.created` LABEL 中引用
- 构建时删除引入非确定性的 `ldconfig` 辅助缓存文件
- 在 `docker build` / `podman build` 时通过 `--source-date-epoch=$SOURCE_DATE_EPOCH` 与 `--rewrite-timestamp` 统一时间戳
更多细节可查看 [archlinux-docker 仓库的相关变更集](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/merge_requests/96/diffs)。
感谢 [Mark](https://hegreberg.io/) 在此过程中的帮助!
这是我们“可复现构建”大目标中的又一重要成果,我已经在期待下一步了!🤗
顺便一提,我打算后续在服务器上为这款 Docker 镜像(以及 [WSL 镜像](https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/REPRO.md) 和将来可能出现的其他可复现镜像)搭建一个自动 rebuilder:定期拉取最新镜像、重构建、验证可复现性并公开日志与结果——只要我能抽出时间 👼。
相似文章
Debian 必须提供可复现的软件包
讨论 Debian 分发可复现软件包的要求,以确保构建的一致性和安全性。
2026年5月可重复构建进展报告 **欢迎阅读我们的每月更新!** 本期将汇报 [可重复构建](https://reproducible-builds.org/) 项目在2026年5月的最新进展。如您有意参与贡献,请访问我们的 [贡献指南](https://reproducible-builds.org/contribute/) 页面,或通过 `#reproducible-builds` IRC 频道(位于 [irc.oftc.net](https://www.oftc.net/))与我们取得联系。 --- ## 本月动态 ### 新闻与媒体报道 ... ### 发行版进展 ... ### 软件项目进展 ... ### 社区活动 ... --- *如需了解更多信息,欢迎访问 [reproducible-builds.org](https://reproducible-builds.org/)。*
# 2026年5月可重复构建报告 2026年5月的可重复构建报告重点介绍了一项重大的 Debian 政策变更——要求所有软件包必须可重复构建才能纳入"forky"版本发布,同时还包括2026年哥德堡峰会的相关消息、新版本 rebuilderd 的发布以及其他项目更新。
Arch Linux AUR 中的恶意软件现在向 shell 配置插入俄语垃圾信息
Arch Linux AUR 中的恶意软件包被发现向用户的 shell 配置文件中插入俄语垃圾信息,促使维护者进行清理。
AURpocalypse 降临:近期 AUR 攻击事件一览
Arch 用户软件仓库(AUR)持续遭受攻击,攻击者通过创建新账户来接管被遗弃的软件包并推送恶意更新。该项目已暂时禁用新用户注册,但长期安全解决方案仍不明确。
Arch Linux: 对所有使用 `varnish` 用户的重大变更,该软件包已更名为 `vinyl-cache`
Arch Linux 通知用户,varnish 软件包已更名为 vinyl-cache,需要手动迁移配置文件、目录、用户和 systemd 单元。