大卫·惠勒:概念验证:PGXN 二进制分发格式

大卫·惠勒:概念验证:PGXN 二进制分发格式

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

在GitHub上设立了PGXN讨论区,以便更方便地讨论PGXN及相关改进。一个关于快速安装预编译二进制PostgreSQL扩展包的二进制分发格式的提案已经在macOS和Linux上创建并测试。安装过程在安装文件之前会验证兼容性。该提案现已开放供审查和反馈。

🔎

延伸解读

二进制分发格式的设计思路

该提案借鉴了 Python wheel 和 Trunk 格式,将文件按 pg_config 目录配置存储,安装时直接复制到对应目录。包名包含包名、版本、PostgreSQL 版本、操作系统、系统版本和架构,便于安装客户端匹配平台。这种设计旨在简化预编译扩展的安装,避免从源码编译的复杂性。

概念验证的实现与验证

作者通过 trunk.mk 和 install_trunk 脚本实现了概念验证,并在 macOS 和 Linux 上测试了 semver 扩展。安装过程会验证每个文件的 SHA256 校验和、Trunk 格式版本、PostgreSQL 版本和平台兼容性,确保包适合当前环境。测试表明,安装后扩展能正常创建和使用。

当前限制与后续计划

目前的概念验证仅用于证明模式可行性,并非完整可发布的解决方案。trunk.json 的内容尚未最终确定,但计划包含验证信息。作者欢迎 PGXS 项目尝试并提供反馈,后续将开发正式的命令行客户端和 SDK,支持 PGXS 和 pgrx 等构建系统。

❓

Q&A

PGXN讨论区的目的是什么?

PGXN讨论区旨在方便讨论PGXN及相关改进,促进更多人参与讨论和反馈。

PGXN提案的主要内容是什么?

提案提出了一种快速安装预编译二进制PostgreSQL扩展包的格式,支持平台和PostgreSQL版本匹配。

如何验证安装文件的兼容性?

安装过程会在安装文件之前验证兼容性,确保包适合特定平台和Postgres版本。

新文件trunk.mk的作用是什么?

trunk.mk重构了PGXS的安装目标,以支持新的包目录格式。

如何使用install_trunk脚本进行安装?

使用install_trunk脚本时,需提供.trunk文件,脚本会解压并验证文件的完整性和兼容性后进行安装。

提案的反馈和审查如何进行?

提案现已开放供审查和反馈,欢迎PGXS项目尝试该模式并提供改进意见。

🏷️

标签

➡️

继续阅读