主要观点:PostgreSQL 项目发布的主要产物是源代码 tarball,其创建有技巧且多年来已脚本化,tarball 还包含预构建文件。但此系统存在两大问题,导致在 PostgreSQL 17 中被摒弃,新方式是通过git archive
以可重现和可验证的方式生成 tarball。
关键信息:
- 发布时发布源代码 tarball,用于下游打包或手动构建软件。
- 手动创建 tarball 需注意代码状态等,多年来已有脚本处理。
- 源代码 tarball 包含预构建文件,有历史原因和便利之处。
- 原系统在构建系统维护等方面棘手,且软件供应链关注度提高。
- 第三方难以验证 tarball 创建过程,易受 XZ Utils 后门影响。
- PostgreSQL 17 改为
git archive
生成 tarball,需校准选项和较新 Git 版本,目前.tar.bz2
可重现。
重要细节: make distprep
等命令用于不同状态转换,vpath 构建复杂。- 下游打包已注重软件供应链,Git 提供源代码完整性保证。
- 原 tarball 生成过程不完美,难以完全验证。
- 升级 Git 版本后,17.0 最终版的.tar.gz 也可重现。
- 仍有可改进之处,如改进可重现构建和代码进入 Git 仓库的追溯性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。