阿拉斯泰尔·特纳:如何在Ubuntu 22.04上构建PostgreSQL补丁测试环境

阿拉斯泰尔·特纳:如何在Ubuntu 22.04上构建PostgreSQL补丁测试环境

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

内容提要

本文介绍了在Ubuntu 22.04上从源代码构建PostgreSQL的步骤,包括使用Meson构建系统和配置环境。作者设置了两个不同的PostgreSQL安装以便进行测试和开发,详细说明了依赖项安装、源代码获取、构建过程及测试套件的运行,并强调了使用Git管理补丁和分支的重要性。最后提到PostgreSQL扩展的潜在功能。

🔎

延伸解读

双环境隔离:稳定版与测试版并行

作者在Ubuntu 22.04上同时维护两个PostgreSQL环境:稳定版来自pgdg apt仓库,测试版直接从Git仓库构建。两者使用不同的二进制、数据目录、端口和Unix套接字,避免相互干扰。测试环境在独立用户的家目录下构建和运行,无需sudo权限,降低了因测试补丁导致系统级问题的风险。这种隔离方式适合需要频繁尝试开发版或补丁的开发者。

Meson与Ninja:现代构建流程的优势

PostgreSQL已采用Meson作为构建系统,配合Ninja实现并行编译。Meson负责生成依赖图,Ninja据此仅重新编译受影响的文件,后续构建速度显著提升。构建目录独立于源码树,可创建多个不同配置的构建目录。通过-D选项可设置cassert=true和buildtype=debug等参数,便于测试时获取更多调试信息,但会带来一定性能开销。

Git分支管理:补丁测试与清理策略

每个待测补丁应在独立Git分支上应用,便于切换和隔离。补丁更新时,可用git stash -u暂存所有更改(包括未跟踪文件),然后丢弃以恢复干净状态,再应用新补丁。git reset或git revert处理已跟踪文件的修改,git clean -f删除未跟踪文件。定期清理本地分支可避免列表混乱。这套流程能有效管理多个补丁的测试周期。

扩展测试与后续探索方向

构建好的测试环境不仅用于验证补丁,还可测试依赖PostgreSQL的应用程序或扩展。扩展能提供额外数据类型、自定义存储模型等功能。例如Percona Labs的实验性扩展利用表访问方法接口透明加密表内容。对于LDAP、Kerberos等集成测试,未来可考虑使用测试容器。作者建议有兴趣的读者尝试扩展并反馈。

❓

Q&A

在Ubuntu 22.04上构建PostgreSQL的主要步骤是什么?

主要步骤包括安装依赖项、获取源代码、设置Meson构建环境、使用Ninja构建项目以及运行测试套件。

为什么要在测试环境中设置两个不同的PostgreSQL安装?

设置两个不同的安装可以分别进行稳定版本和测试版本的开发与测试,避免相互影响。

Meson构建系统的依赖项有哪些?

Meson构建系统的依赖项包括build-essential等工具包,包管理器可以安装构建PostgreSQL所需的特定依赖项。

如何使用Git管理PostgreSQL的补丁和分支?

使用Git创建新分支以应用补丁,切换到该分支后应用补丁并运行测试,确保补丁正常工作。

PostgreSQL扩展提供了哪些功能?

PostgreSQL扩展提供额外的数据类型和自定义存储模型等功能,增强了数据库的能力。

在构建PostgreSQL时,如何确保测试套件正常运行?

在构建完成后,运行测试套件以检查所有组件是否正常构建,确保环境设置正确。

🏷️

标签

➡️

继续阅读