前言
PostgreSQL 17带来了一个重大变化:引入了Meson构建系统作为传统configure/make的替代方案。本文将带你快速掌握这两种构建方式的区别,并在Rocky Linux 8上完成PostgreSQL 17的编译安装。
为什么选择Meson?
PostgreSQL传统的./configure
+make
构建方式已经服务了数十年,但随着项目规模扩大,这种方式的局限性日益明显:
- 构建速度慢
:configure脚本需要逐行解析,在大型项目上耗时明显 - 语法复杂
:Makefile规则难以维护和扩展 - 跨平台支持有限
:Windows平台构建体验不佳
Meson作为现代构建系统,具有以下优势:
• 构建速度快:比传统方式快4倍以上
• 语法简洁:更易读易维护
• 原生支持跨平台:包括Windows、Linux、macOS等
• 更好的依赖管理:自动处理库依赖关系
环境准备(Rocky Linux 8)
首先确保系统已安装必要依赖:
sudo dnf install -y git gcc make readline-devel zlib-devel \perl-ExtUtils-Embed python3-devel openssl-devel \libxml2-devel libxslt-devel systemd-devel
对于Meson构建,还需额外安装:
sudo dnf install -y meson ninja-build
两种构建方式对比
1. 传统configure方式
# 下载源码git clone https://github.com/postgresql/postgresql.gitcd postgresql# 配置构建参数./configure --prefix=/usr/local/pgsql17 \--with-ssl=openssl \--with-libxml \--with-systemd# 编译安装make -j$(nproc)sudo make install
特点:
• 使用shell脚本配置环境
• 通过Makefile控制构建过程
• 需要手动指定大多数参数
• 构建时间较长(约15-30分钟)
2. Meson方式
# 创建构建目录meson setup build --prefix=/usr/local/pgsql17 \-Dssl=openssl \-Dlibxml=enabled \-Dsystemd=enabled# 编译安装cd buildninjasudo ninja install
特点:
• 声明式配置(类似CMake)
• 使用Ninja作为后端构建工具
• 自动并行化构建
• 构建速度快(约5-10分钟)
• 更清晰的参数结构(-D参数名=值)
关键参数对比
--prefix=/path | --prefix=/path | |
--with-ssl=openssl | -Dssl=openssl | |
--with-libxml | -Dlibxml=enabled | |
--enable-debug | -Ddebug=true | |
--with-systemd | -Dsystemd=enabled | |
--enable-cassert | -Dcassert=true |
初始化数据库
两种方式安装后的初始化步骤相同:
sudo useradd postgressudo mkdir /usr/local/pgsql17/datasudo chown postgres:postgres /usr/local/pgsql17/data# 切换用户初始化sudo -u postgres /usr/local/pgsql17/bin/initdb -D /usr/local/pgsql17/data# 启动服务sudo -u postgres /usr/local/pgsql17/bin/pg_ctl -D /usr/local/pgsql17/data start
如何选择?
• 传统configure:适合需要精细控制构建过程的高级用户
• Meson:推荐大多数用户使用,特别是:
• 开发环境频繁构建
• Windows平台开发
• 需要更快构建速度的场景
PostgreSQL核心开发者Andrew Dunstan表示:”Meson将成为PostgreSQL未来的默认构建系统,它显著简化了我们的构建基础设施。”
常见问题
Q:可以混合使用两种构建方式吗?
A:不建议。构建前应清理之前的构建文件:
# 对于configure方式make maintainer-clean# 对于Meson方式rm -rf build/
Q:如何查看Meson支持的所有参数?
A:在构建目录中运行:
meson configure
Q:两种方式生成的二进制文件有区别吗?
A:没有本质区别,最终生成的二进制功能相同,只是构建过程不同。
总结
PostgreSQL 17引入Meson构建系统是项目现代化的重要一步。对于Rocky Linux 8用户,我们推荐尝试Meson方式,体验更快的构建速度和更简洁的配置语法。
无论选择哪种方式,PostgreSQL 17都将继续提供稳定强大的数据库服务。现在就开始你的PostgreSQL 17之旅吧!





