暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 17在Rocky Linux 8上的现代化编译安装指南:Meson vs Configure

前言

PostgreSQL 17带来了一个重大变化:引入了Meson构建系统作为传统configure/make的替代方案。本文将带你快速掌握这两种构建方式的区别,并在Rocky Linux 8上完成PostgreSQL 17的编译安装。

为什么选择Meson?

PostgreSQL传统的./configure
+make
构建方式已经服务了数十年,但随着项目规模扩大,这种方式的局限性日益明显:

  1. 构建速度慢
    :configure脚本需要逐行解析,在大型项目上耗时明显
  2. 语法复杂
    :Makefile规则难以维护和扩展
  3. 跨平台支持有限
    :Windows平台构建体验不佳

Meson作为现代构建系统,具有以下优势:
• 构建速度快:比传统方式快4倍以上
• 语法简洁:更易读易维护
• 原生支持跨平台:包括Windows、Linux、macOS等
• 更好的依赖管理:自动处理库依赖关系

环境准备(Rocky Linux 8)

首先确保系统已安装必要依赖:

  1. sudo dnf install -y git gcc make readline-devel zlib-devel \
  2.     perl-ExtUtils-Embed python3-devel openssl-devel \
  3.     libxml2-devel libxslt-devel systemd-devel

对于Meson构建,还需额外安装:

  1. sudo dnf install -y meson ninja-build

两种构建方式对比

1. 传统configure方式

  1. # 下载源码
  2. git clone https://github.com/postgresql/postgresql.git
  3. cd postgresql

  4. # 配置构建参数
  5. ./configure --prefix=/usr/local/pgsql17 \
  6.             --with-ssl=openssl \
  7.             --with-libxml \
  8.             --with-systemd

  9. # 编译安装
  10. make -j$(nproc)
  11. sudo make install

特点
• 使用shell脚本配置环境
• 通过Makefile控制构建过程
• 需要手动指定大多数参数
• 构建时间较长(约15-30分钟)

2. Meson方式

  1. # 创建构建目录
  2. meson setup build --prefix=/usr/local/pgsql17 \
  3.                  -Dssl=openssl \
  4.                  -Dlibxml=enabled \
  5.                  -Dsystemd=enabled

  6. # 编译安装
  7. cd build
  8. ninja
  9. sudo ninja install

特点
• 声明式配置(类似CMake)
• 使用Ninja作为后端构建工具
• 自动并行化构建
• 构建速度快(约5-10分钟)
• 更清晰的参数结构(-D参数名=值)

关键参数对比

功能
configure参数
Meson参数
安装路径
--prefix=/path
--prefix=/path
SSL支持
--with-ssl=openssl
-Dssl=openssl
XML支持
--with-libxml
-Dlibxml=enabled
调试符号
--enable-debug
-Ddebug=true
系统集成
--with-systemd
-Dsystemd=enabled
断言检查
--enable-cassert
-Dcassert=true

初始化数据库

两种方式安装后的初始化步骤相同:

  1. sudo useradd postgres
  2. sudo mkdir /usr/local/pgsql17/data
  3. sudo chown postgres:postgres /usr/local/pgsql17/data

  4. # 切换用户初始化
  5. sudo -u postgres /usr/local/pgsql17/bin/initdb -/usr/local/pgsql17/data

  6. # 启动服务
  7. sudo -u postgres /usr/local/pgsql17/bin/pg_ctl -/usr/local/pgsql17/data start

如何选择?

• 传统configure:适合需要精细控制构建过程的高级用户
• Meson:推荐大多数用户使用,特别是:
• 开发环境频繁构建
• Windows平台开发
• 需要更快构建速度的场景

PostgreSQL核心开发者Andrew Dunstan表示:”Meson将成为PostgreSQL未来的默认构建系统,它显著简化了我们的构建基础设施。”

常见问题

Q:可以混合使用两种构建方式吗?
A:不建议。构建前应清理之前的构建文件:

  1. # 对于configure方式
  2. make maintainer-clean

  3. # 对于Meson方式
  4. rm -rf build/

Q:如何查看Meson支持的所有参数?
A:在构建目录中运行:

  1. meson configure

Q:两种方式生成的二进制文件有区别吗?
A:没有本质区别,最终生成的二进制功能相同,只是构建过程不同。

总结

PostgreSQL 17引入Meson构建系统是项目现代化的重要一步。对于Rocky Linux 8用户,我们推荐尝试Meson方式,体验更快的构建速度和更简洁的配置语法。

无论选择哪种方式,PostgreSQL 17都将继续提供稳定强大的数据库服务。现在就开始你的PostgreSQL 17之旅吧!


文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论