内容提要
本文介绍了在Ubuntu 22.04上使用Postgres的源代码构建和使用步骤,包括使用Meson作为构建系统的新选项和更精细的git命令。作者还描述了在Ubuntu桌面上安装Postgres的稳定版本和测试版本,并建议将测试环境与稳定环境分开。文章提供了构建和运行测试套件的步骤,以及尝试补丁和清理本地分支的方法。
延伸解读
构建环境隔离:稳定版与测试版分离
文章建议将稳定版和测试版PostgreSQL安装在不同的环境中,使用不同的二进制文件、数据目录、端口和UNIX套接字。稳定版来自pgdg apt仓库,测试版直接从git仓库构建。测试环境在独立用户的家目录下构建和运行,无需特权访问,避免相互干扰。这种隔离方式便于快速尝试新语法或补丁,同时降低对稳定环境的影响。
Meson构建系统的优势与配置
PostgreSQL采用Meson作为构建系统,它根据本地环境配置构建并生成依赖图,Ninja利用该信息并行编译。文章使用meson setup命令指定构建目录、安装前缀和选项,如-Dcassert=true和-Dbuildtype=debug以获取更多测试信息,-Dpgport=6543设置默认端口。构建目录独立于源码树,可创建多个不同配置的构建目录。
补丁测试流程与分支管理
测试补丁时,创建git本地分支并应用补丁,使用git apply --stat --apply查看应用状态。构建后运行ninja test验证。维护分支时,可用git stash -u收集未跟踪文件并丢弃,以清理旧补丁。定期用git branch --list和git branch --delete清理本地分支,保持代码库整洁。
测试环境的安装与运行
补丁构建通过后,使用ninja install安装到用户家目录,无需sudo。设置PATH环境变量使新工具优先使用,然后运行initdb初始化数据库,并用pg_ctl启动服务器。服务器监听构建时指定的端口。为便于区分稳定和测试环境,可创建与当前用户同名的数据库。
Q&A
在Ubuntu 22.04上构建PostgreSQL需要哪些基本环境要求?
需要安装meson和相关的依赖包,如build-essential、flex和bison。
如何从源代码克隆PostgreSQL并设置构建环境?
使用git克隆PostgreSQL源代码,然后通过meson设置构建环境,指定构建目录和相关选项。
在测试环境中如何应用补丁?
创建一个新的git分支,使用git apply命令应用补丁,然后在构建目录中运行ninja进行构建和测试。
为什么建议将稳定版本和测试版本的PostgreSQL安装在不同的环境中?
这样可以减少对权限的需求,并避免测试版本对稳定版本的影响。
如何维护测试分支以保持代码库整洁?
可以使用git的stash命令管理未跟踪的文件,并定期清理本地分支。
构建PostgreSQL后如何运行测试套件?
在构建目录中运行ninja test命令以检查构建是否正确。