温馨提示×

CentOS怎么编译PostgreSQL

小樊
33
2026-07-21 10:27:28
栏目: 云计算

CentOS 上编译 PostgreSQL,一般会从 源码编译,这也是官方推荐、灵活性最高的方式。下面按 主流 CentOS 7 / 8 / Rocky / Alma 给你一套常用流程(以 PostgreSQL 16 为例)。


一、准备编译环境

1️⃣ 安装依赖包

CentOS 7

yum install -y gcc gcc-c++ make readline-devel zlib-devel \
    openssl-devel pam-devel libxml2-devel libxslt-devel \
    systemd-devel

CentOS 8 / Rocky / Alma

dnf install -y gcc gcc-c++ make readline-devel zlib-devel \
    openssl-devel pam-devel libxml2-devel libxslt-devel \
    systemd-devel

如果你是最小化安装,建议再补上:

yum install -y wget bzip2

二、下载 PostgreSQL 源码

去官网或镜像下载:

cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v16.2/postgresql-16.2.tar.gz
tar -zxvf postgresql-16.2.tar.gz
cd postgresql-16.2

三、配置编译参数(关键)

基础配置(推荐)

./configure \
  --prefix=/usr/local/pgsql \
  --with-openssl \
  --with-pam \
  --with-libxml \
  --with-libxslt \
  --with-systemd

常用参数说明

参数 说明
--prefix 安装目录
--with-openssl 启用 SSL
--with-pam PAM 认证
--with-libxml XML 支持
--with-libxslt XSLT 支持
--with-systemd systemd 集成

四、编译并安装

make -j$(nproc)
make install

安装完成后:

ls /usr/local/pgsql

目录结构会包含:

bin/
lib/
share/
include/

五、创建 PostgreSQL 用户

useradd -m -s /bin/bash postgres

六、初始化数据库

1️⃣ 设置环境变量(可选)

echo 'export PATH=/usr/local/pgsql/bin:$PATH' >> /etc/profile
source /etc/profile

2️⃣ 创建数据目录

mkdir -p /data/pgsql
chown postgres:postgres /data/pgsql

3️⃣ 初始化

su - postgres
/usr/local/pgsql/bin/initdb -D /data/pgsql

七、启动 PostgreSQL

/usr/local/pgsql/bin/pg_ctl -D /data/pgsql -l logfile start

检查状态:

ps -ef | grep postgres

八、设置 systemd 服务(推荐)

创建服务文件

vim /etc/systemd/system/postgresql.service

内容示例:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /data/pgsql start
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /data/pgsql stop
ExecReload=/usr/local/pgsql/bin/pg_ctl -D /data/pgsql reload
TimeoutSec=30

[Install]
WantedBy=multi-user.target

启用并启动

systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql

九、常见问题

❌ configure 报错

readline library not found

✅ 解决:

yum install -y readline-devel

❌ make 失败

✅ 检查:

gcc --version
make --version

十、快速总结

依赖 → 下载源码 → configure → make → make install → initdb → 启动

如果你愿意,我可以帮你:

  • 写一份自动编译脚本
  • 指定版本(如 PG 13 / 15 / 17)
  • 编译带中文排序 / ICU 支持
  • 编译 + 主从 / 流复制

直接告诉我你用的 CentOS 版本 + PG 版本 即可。

0