1. 首页 > PostgreSQL教程 > 正文

PostgreSQL教程FG062-PG源码安装:编译参数配置与依赖解决

本文档风哥主要介绍PostgreSQL数据库源码安装相关知识,包括编译依赖包安装、configure配置参数、make编译安装、自定义编译选项等内容,风哥教程参考PostgreSQL官方文档Installation from Source Code章节,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 PostgreSQL数据库源码安装概述

PostgreSQL数据库源码安装是指从PostgreSQL官方下载源代码包,通过configure配置、make编译、make install安装的方式部署数据库。源码安装可以自定义编译选项,启用或禁用特定功能,适合需要定制化部署的场景。更多视频教程www.fgedu.net.cn

PostgreSQL数据库源码安装流程:

  • 下载源码包并解压
  • 安装编译依赖包
  • 运行configure脚本配置编译选项
  • 执行make编译源代码
  • 执行make install安装程序
  • 初始化数据库集群

1.2 PostgreSQL数据库源码安装的优势与场景

PostgreSQL数据库源码安装的主要优势和适用场景:

  • 功能定制:可启用或禁用特定功能模块
  • 路径自定义:可指定安装路径和数据目录
  • 性能优化:可针对特定CPU架构优化编译
  • 版本控制:可安装任意版本,不受包管理器限制
  • 调试支持:可编译带调试符号的版本

1.3 PostgreSQL数据库源码编译依赖包

PostgreSQL数据库源码编译所需依赖包:

# 必需依赖包
– GCC编译器:gcc、gcc-c++
– Make工具:make
– GNU Readline库:readline-devel
– Zlib压缩库:zlib-devel

# 可选依赖包
– OpenSSL库:openssl-devel(SSL连接支持)
– LDAP库:openldap-devel(LDAP认证支持)
– Python开发包:python3-devel(PL/Python支持)
– Perl开发包:perl-devel(PL/Perl支持)
– Tcl开发包:tcl-devel(PL/Tcl支持)
– ICU库:libicu-devel(ICU排序规则支持)
– XML库:libxml2-devel(XML支持)
– XSLT库:libxslt-devel(XSLT支持)
– UUID库:uuid-devel(UUID生成支持)
– Pam库:pam-devel(PAM认证支持)
– Systemd库:systemd-devel(Systemd集成)

风哥提示:风哥教程针对风哥教程针对风哥教程针对生产环境建议至少安装readline、zlib、openssl依赖包,以支持命令行编辑、压缩和SSL连接功能。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 PostgreSQL数据库编译参数规划

PostgreSQL数据库常用编译参数规划:

# 常用configure参数说明
–prefix=PREFIX 安装目录前缀,默认/postgresql/fgapp
–exec-prefix=EXEC-PREFIX 可执行文件安装目录
–bindir=DIR 可执行文件目录
–sysconfdir=DIR 配置文件目录
–datadir=DIR 数据文件目录
–libdir=DIR 库文件目录
–includedir=DIR 头文件目录
–mandir=DIR 手册页目录

# 功能启用参数
–with-openssl 启用SSL支持
–with-ldap 启用LDAP支持
–with-python 启用PL/Python支持
–with-perl 启用PL/Perl支持
–with-tcl 启用PL/Tcl支持
–with-icu 启用ICU支持
–with-libxml 启用XML支持
–with-libxslt 启用XSLT支持
–with-uuid=e2fs 启用UUID支持
–with-pam 启用PAM认证
–with-systemd 启用Systemd服务
–with-selinux 启用SELinux支持

# 编译优化参数
–enable-debug 启用调试符号
–enable-cassert 启用断言检查
–enable-thread-safety 启用线程安全
–enable-nls 启用多语言支持

2.2 PostgreSQL数据库安装目录规划

生产环境PostgreSQL数据库源码安装目录规划:

# 推荐目录结构
安装目录:/postgresql/fgapp/pgsql-18
数据目录:/postgresql/data
日志目录:/postgresql/logs
备份目录:/postgresql/backup
归档目录:/postgresql/archive
源码目录:/postgresql/software/postgresql-18.3

# 目录创建命令
mkdir -p /postgresql/fgapp
mkdir -p /postgresql/data
mkdir -p /postgresql/logs
mkdir -p /postgresql/backup
mkdir -p /postgresql/archive
mkdir -p /postgresql/software

2.3 PostgreSQL数据库编译环境规划

PostgreSQL数据库编译环境规划要点:

from oracle:www.itpux.com

  • 编译用户:建议使用root用户编译,postgres用户运行
  • 磁盘空间:源码目录至少需要500MB,编译目录需要额外空间
  • 内存要求:编译过程建议至少2GB内存
  • 编译时间:完整编译约需10-30分钟
风哥教程针对风哥教程针对风哥教程针对生产环境建议:源码安装前确保系统已安装所有必需依赖包,避免编译过程中因依赖缺失导致失败。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 PostgreSQL数据库编译依赖包安装

3.1.1 Oracle Linux/RHEL系统依赖包安装

# 安装必需依赖包
$ sudo dnf install -y gcc gcc-c++ make readline-devel zlib-devel

Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
gcc x86_64 11.4.1-2.0.1.el9 ol9_fgappstream 31 M
gcc-c++ x86_64 11.4.1-2.0.1.el9 ol9_fgappstream 13 M
make x86_64 1:4.3-7.el9 ol9_baseos 538 k
readline-devel x86_64 8.1-4.el9 ol9_fgappstream 165 k
zlib-devel x86_64 1.2.11-40.el9 ol9_fgappstream 44 k

Transaction Summary
================================================================================
Install 5 Packages

Total download size: 45 M
Installed size: 120 M
Downloading Packages:
(1/5): gcc-11.4.1-2.0.1.el9.x86_64.rpm 25 MB/s | 31 MB 00:01
(2/5): gcc-c++-11.4.1-2.0.1.el9.x86_64.rpm 15 MB/s | 13 MB 00:00
(3/5): make-4.3-7.el9.x86_64.rpm 3.5 MB/s | 538 kB 00:00
(4/5): readline-devel-8.1-4.el9.x86_64.rpm 2.1 MB/s | 165 kB 00:00
(5/5): zlib-devel-1.2.11-40.el9.x86_64.rpm 800 kB/s | 44 kB 00:00
——————————————————————————–
Total 45 MB/s | 45 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : zlib-devel-1.2.11-40.el9.x86_64 1/5
Installing : readline-devel-8.1-4.el9.x86_64 2/5
Installing : make-1:4.3-7.el9.x86_64 3/5
Installing : gcc-11.4.1-2.0.1.el9.x86_64 4/5
Installing : gcc-c++-11.4.1-2.0.1.el9.x86_64 5/5
Verifying : gcc-c++-11.4.1-2.0.1.el9.x86_64 1/5
Verifying : gcc-11.4.1-2.0.1.el9.x86_64 2/5
Verifying : make-1:4.3-7.el9.x86_64 3/5
Verifying : readline-devel-8.1-4.el9.x86_64 4/5
Verifying : zlib-devel-1.2.11-40.el9.x86_64 5/5

Installed:
gcc-11.4.1-2.0.1.el9.x86_64
gcc-c++-11.4.1-2.0.1.el9.x86_64
make-1:4.3-7.el9.x86_64
readline-devel-8.1-4.el9.x86_64
zlib-devel-1.2.11-40.el9.x86_64

Complete!

# 安装可选依赖包
$ sudo dnf install -y openssl-devel libicu-devel libxml2-devel libxslt-devel \
python3-devel perl-devel tcl-devel systemd-devel pam-devel openldap-devel \
uuid-devel

Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
libicu-devel x86_64 67.1-9.el9 ol9_fgappstream 956 k
libxml2-devel x86_64 2.9.13-4.el9 ol9_fgappstream 1.1 M
libxslt-devel x86_64 1.1.34-9.el9 ol9_fgappstream 410 k
openldap-devel x86_64 2.6.4-3.el9 ol9_fgappstream 568 k
openssl-devel x86_64 1:3.0.7-24.el9 ol9_fgappstream 3.2 M
pam-devel x86_64 1.5.1-14.el9 ol9_fgappstream 96 k
perl-devel x86_64 4:5.32.1-479.el9 ol9_fgappstream 6.4 M
python3-devel x86_64 3.9.18-1.el9 ol9_fgappstream 1.2 M
systemd-devel x86_64 252-18.el9 ol9_fgappstream 489 k
tcl-devel x86_64 1:8.6.10-7.el9 ol9_fgappstream 210 k
uuid-devel x86_64 2.37.4-15.el9 ol9_fgappstream 42 k

Transaction Summary
================================================================================
Install 11 Packages

Total download size: 15 M
Installed size: 45 M
Downloading Packages:
(1/11): libicu-devel-67.1-9.el9.x86_64.rpm 8.5 MB/s | 956 kB 00:00
(2/11): libxml2-devel-2.9.13-4.el9.x86_64.rpm 9.2 MB/s | 1.1 MB 00:00
(3/11): libxslt-devel-1.1.34-9.el9.x86_64.rpm 3.5 MB/s | 410 kB 00:00
(4/11): openldap-devel-2.6.4-3.el9.x86_64.rpm 5.2 MB/s | 568 kB 00:00
(5/11): openssl-devel-3.0.7-24.el9.x86_64.rpm 15 MB/s | 3.2 MB 00:00
(6/11): pam-devel-1.5.1-14.el9.x86_64.rpm 800 kB/s | 96 kB 00:00
(7/11): perl-devel-5.32.1-479.el9.x86_64.rpm 12 MB/s | 6.4 MB 00:00
(8/11): python3-devel-3.9.18-1.el9.x86_64.rpm 10 MB/s | 1.2 MB 00:00
(9/11): systemd-devel-252-18.el9.x86_64.rpm 4.5 MB/s | 489 kB 00:00
(10/11): tcl-devel-8.6.10-7.el9.x86_64.rpm 1.8 MB/s | 210 kB 00:00
(11/11): uuid-devel-2.37.4-15.el9.x86_64.rpm 350 kB/s | 42 kB 00:00
——————————————————————————–
Total 20 MB/s | 15 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libicu-devel-67.1-9.el9.x86_64 1/11
Installing : libxml2-devel-2.9.13-4.el9.x86_64 2/11
Installing : libxslt-devel-1.1.34-9.el9.x86_64 3/11
Installing : openldap-devel-2.6.4-3.el9.x86_64 4/11
Installing : openssl-devel-3.0.7-24.el9.x86_64 5/11
Installing : pam-devel-1.5.1-14.el9.x86_64 6/11
Installing : perl-devel-5.32.1-479.el9.x86_64 7/11
Installing : python3-devel-3.9.18-1.el9.x86_64 8/11
Installing : systemd-devel-252-18.el9.x86_64 9/11
Installing : tcl-devel-8.6.10-7.el9.x86_64 10/11
Installing : uuid-devel-2.37.4-15.el9.x86_64 11/11
Verifying : libicu-devel-67.1-9.el9.x86_64 1/11
Verifying : libxml2-devel-2.9.13-4.el9.x86_64 2/11
Verifying : libxslt-devel-1.1.34-9.el9.x86_64 3/11
Verifying : openldap-devel-2.6.4-3.el9.x86_64 4/11
Verifying : openssl-devel-3.0.7-24.el9.x86_64 5/11
Verifying : pam-devel-1.5.1-14.el9.x86_64 6/11
Verifying : perl-devel-5.32.1-479.el9.x86_64 7/11
Verifying : python3-devel-3.9.18-1.el9.x86_64 8/11
Verifying : systemd-devel-252-18.el9.x86_64 9/11
Verifying : tcl-devel-8.6.10-7.el9.x86_64 10/11
Verifying : uuid-devel-2.37.4-15.el9.x86_64 11/11

Installed:
libicu-devel-67.1-9.el9.x86_64
libxml2-devel-2.9.13-4.el9.x86_64
libxslt-devel-1.1.34-9.el9.x86_64
openldap-devel-2.6.4-3.el9.x86_64
openssl-devel-1:3.0.7-24.el9.x86_64
pam-devel-1.5.1-14.el9.x86_64
perl-devel-4:5.32.1-479.el9.x86_64
python3-devel-3.9.18-1.el9.x86_64
systemd-devel-252-18.el9.x86_64
tcl-devel-1:8.6.10-7.el9.x86_64
uuid-devel-2.37.4-15.el9.x86_64

Complete!

3.2 PostgreSQL数据库源码下载与解压

3.2.1 下载PostgreSQL数据库源码包

# 创建软件目录
$ mkdir -p /postgresql/software
$ cd /postgresql/software

# 下载PostgreSQL 18.3源码包
$ wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.gz

–2026-04-02 10:00:00– https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.gz
Resolving ftp.postgresql.org (ftp.postgresql.org)… 147.75.85.132
Connecting to ftp.postgresql.org (ftp.postgresql.org)|147.75.85.132|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 31234567 (30M) [fgapplication/gzip]
Saving to: ‘postgresql-18.3.tar.gz’

postgresql-18.3.tar.gz 100%[==========================================>] 29.78M 5.2MB/s in 5.8s

2026-04-02 10:00:06 (5.2 MB/s) – ‘postgresql-18.3.tar.gz’ saved [31234567/31234567]

# 验证下载文件
$ ls -lh postgresql-18.3.tar.gz
-rw-r–r–. 1 root root 30M Apr 2 10:00 postgresql-18.3.tar.gz

# 校验MD5值
$ md5sum postgresql-18.3.tar.gz
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 postgresql-18.3.tar.gz

3.2.2 解压PostgreSQL数据库源码包

# 解压源码包
$ tar -zxvf postgresql-18.3.tar.gz

postgresql-18.3/
postgresql-18.3/config/
postgresql-18.3/config/ax_pthread.m4
postgresql-18.3/config/c-compiler.m4
postgresql-18.3/config/docbook.m4
postgresql-18.3/config/general.m4
postgresql-18.3/config/llvm.m4
postgresql-18.3/config/perl.m4
postgresql-18.3/config/python.m4
postgresql-18.3/config/tcl.m4
postgresql-18.3/contrib/
postgresql-18.3/contrib/Makefile

postgresql-18.3/src/tools/version.c
postgresql-18.3/src/tools/win32tzlist.c
postgresql-18.3/Makefile
postgresql-18.3/GNUmakefile.in
postgresql-18.3/aclocal.m4
postgresql-18.3/configure
postgresql-18.3/configure.in

# 进入源码目录
$ cd postgresql-18.3

# 查看源码目录结构
$ ls -la
total 1216
drwxrwxrwx. 1 1107 1107 4096 Feb 10 00:00 .
drwxr-xr-x. 3 root root 57 Apr 2 10:05 ..
-rw-r–r–. 1 1107 1107 675 Feb 10 00:00 COPYRIGHT
-rw-r–r–. 1 1107 1107 4236 Feb 10 00:00 GNUmakefile.in
-rw-r–r–. 1 1107 1107 286 Feb 10 00:00 HISTORY
-rw-r–r–. 1 1107 1107 621880 Feb 10 00:00 INSTALL
-rw-r–r–. 1 1107 1107 1660 Feb 10 00:00 Makefile
-rw-r–r–. 1 1107 1107 1196 Feb 10 00:00 README
drwxr-xr-x. 2 1107 1107 4096 Feb 10 00:00 config
drwxr-xr-x. 28 1107 1107 4096 Feb 10 00:00 contrib
drwxr-xr-x. 3 1107 1107 4096 Feb 10 00:00 doc
-rw-r–r–. 1 1107 1107 19360 Feb 10 00:00 aclocal.m4
-rwxr-xr-x. 1 1107 1107 526789 Feb 10 00:00 configure
-rw-r–r–. 1 1107 1107 87654 Feb 10 00:00 configure.in
drwxr-xr-x. 3 1107 1107 4096 Feb 10 00:00 src

3.3 PostgreSQL数据库配置与编译安装

3.3.1 运行configure配置脚本

# 配置编译选项
$ ./configure –prefix=/postgresql/fgapp/pgsql-18 \
–with-openssl \
–with-icu \
–with-libxml \
–with-libxslt \
–with-python \
–with-perl \
–with-tcl \
–with-ldap \
–with-pam \
–with-systemd \
–with-uuid=e2fs \
–enable-thread-safety

checking build system type… x86_64-pc-linux-gnu
checking fgedu.net.cn system type… x86_64-pc-linux-gnu
checking which template to use… linux
checking whether to build with 64-bit integer date/time support… yes
checking whether NLS is wanted… no
checking for default port number… 5432
checking for gcc… gcc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether the compiler supports GNU C… yes
checking whether gcc accepts -g… yes
checking for gcc option to enable C11 features… none needed
checking for gcc option to accept ISO C89… none needed
checking for gawk… gawk
checking for flex… no
checking for lex… no
configure: error: flex not found

3.3.2 安装缺失的flex和bison工具

# 安装flex和bison
$ sudo dnf install -y flex bison

Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
bison x86_64 3.7.4-5.el9 ol9_fgappstream 1.0 M
flex x86_64 2.6.4-9.el9 ol9_fgappstream 320 k

Transaction Summary
================================================================================
Install 2 Packages

Total download size: 1.3 M
Installed size: 3.5 M
Downloading Packages:
(1/2): bison-3.7.4-5.el9.x86_64.rpm 5.2 MB/s | 1.0 MB 00:00
(2/2): flex-2.6.4-9.el9.x86_64.rpm 1.6 MB/s | 320 kB 00:00
——————————————————————————–
Total 6.8 MB/s | 1.3 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : flex-2.6.4-9.el9.x86_64 1/2
Installing : bison-3.7.4-5.el9.x86_64 2/2
Verifying : bison-3.7.4-5.el9.x86_64 1/2
Verifying : flex-2.6.4-9.el9.x86_64 2/2

Installed:
bison-3.7.4-5.el9.x86_64 flex-2.6.4-9.el9.x86_64

Complete!

# 重新运行configure
$ ./configure –prefix=/postgresql/fgapp/pgsql-18 \
–with-openssl \
–with-icu \
–with-libxml \
–with-libxslt \
–with-python \
–with-perl \
–with-tcl \
–with-ldap \
–with-pam \
–with-systemd \
–with-uuid=e2fs \
–enable-thread-safety

checking build system type… x86_64-pc-linux-gnu
checking fgedu.net.cn system type… x86_64-pc-linux-gnu
checking which template to use… linux
checking whether to build with 64-bit integer date/time support… yes
checking whether NLS is wanted… no
checking for default port number… 5432
checking for gcc… gcc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether the compiler supports GNU C… yes
checking whether gcc accepts -g… yes
checking for gcc option to enable C11 features… none needed
checking for flex… flex
checking for flex… /usr/bin/flex
checking for bison… bison
checking for bison… /usr/bin/bison
checking for perl… /usr/bin/perl
checking for Python… /usr/bin/python3
checking for OpenSSL… yes
checking for ICU… yes
checking for libxml2… yes
checking for libxslt… yes
checking for LDAP… yes
checking for PAM… yes
checking for systemd… yes
checking for uuid… yes
checking for Tcl… yes
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: creating src/include/pg_config_ext.h
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: linking src/backend/port/tas.s to src/backend/port/tas.h
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h

configure: using CFLAGS=”-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -O2″

configure: using LDFLAGS=”-Wl,–as-needed”

configure: using LIBS=”-lpgcommon -lpgport -lpthread -lz -lreadline -lrt -lcrypt -ldl -lm ”

Configuration summary:
Install prefix: /postgresql/fgapp/pgsql-18
PostgreSQL version: 18.3
SSL support: yes (OpenSSL)
ICU support: yes
XML support: yes
XSLT support: yes
Python support: yes
Perl support: yes
Tcl support: yes
LDAP support: yes
PAM support: yes
Systemd support: yes
UUID support: yes
Thread safety: yes

3.3.3 编译PostgreSQL数据库

# 执行make编译(使用多核加速)
$ make -j$(nproc)

make -C ./src/backend generated-headers
make[1]: 进入目录”/postgresql/software/postgresql-18.3/src/backend”
make -C catalog distprep generated-header-symlinks
make[2]: 进入目录”/postgresql/software/postgresql-18.3/src/backend/catalog”
make[2]: 离开目录”/postgresql/software/postgresql-18.3/src/backend/catalog”
make -C utils distprep generated-header-symlinks
make[2]: 进入目录”/postgresql/software/postgresql-18.3/src/backend/utils”
make[2]: 离开目录”/postgresql/software/postgresql-18.3/src/backend/utils”

make[1]: 离开目录”/postgresql/software/postgresql-18.3/contrib”
All of PostgreSQL successfully made. Ready to install.

# 查看编译结果
$ echo $?
0

3.3.4 安装PostgreSQL数据库

# 执行安装
$ sudo make install

make -C ./src/backend generated-headers
make[1]: 进入目录”/postgresql/software/postgresql-18.3/src/backend”
make[2]: 进入目录”/postgresql/software/postgresql-18.3/src/backend/catalog”
make[2]: 对”distprep”无需做任何事。
make[2]: 离开目录”/postgresql/software/postgresql-18.3/src/backend/catalog”

make[1]: 离开目录”/postgresql/software/postgresql-18.3/src”
PostgreSQL installation complete.

# 安装contrib扩展模块
$ sudo make -C contrib install

make: 进入目录”/postgresql/software/postgresql-18.3/contrib”
make -C adminpack install
make[1]: 进入目录”/postgresql/software/postgresql-18.3/contrib/adminpack”
/bin/mkdir -p ‘/postgresql/fgapp/pgsql-18/lib’
/bin/mkdir -p ‘/postgresql/fgapp/pgsql-18/share/extension’
/bin/mkdir -p ‘/postgresql/fgapp/pgsql-18/share/extension’
/usr/bin/install -c -m 755 adminpack.so ‘/postgresql/fgapp/pgsql-18/lib/adminpack.so’
/usr/bin/install -c -m 644 ./adminpack.control ‘/postgresql/fgapp/pgsql-18/share/extension/’
/usr/bin/install -c -m 644 ./adminpack–1.0.sql ./adminpack–1.0–1.1.sql ./adminpack–1.1–2.0.sql ‘/postgresql/fgapp/pgsql-18/share/extension/’
make[1]: 离开目录”/postgresql/software/postgresql-18.3/contrib/adminpack”

make: 离开目录”/postgresql/software/postgresql-18.3/contrib”

# 验证安装
$ ls -la /postgresql/fgapp/pgsql-18/
total 16
drwxr-xr-x. 2 root root 4096 Apr 2 10:30 bin
drwxr-xr-x. 2 root root 4096 Apr 2 10:30 include
drwxr-xr-x. 4 root root 4096 Apr 2 10:30 lib
drwxr-xr-x. 3 root root 4096 Apr 2 10:30 share

# 查看版本
$ /postgresql/fgapp/pgsql-18/bin/pgsql –version
pgsql (PostgreSQL) 18.3

风哥提示:源码编译时建议使用-j参数启用多核并行编译,可大幅缩短编译时间。编译完成后务必安装contrib目录下的扩展模块。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 PostgreSQL数据库自定义编译参数实战

4.1.1 生产环境推荐编译配置

# 生产环境推荐配置
$ ./configure –prefix=/postgresql/fgapp/pgsql-18 \
–with-openssl \
–with-icu \
–with-libxml \
–with-libxslt \
–with-python \
–with-ldap \
–with-pam \
–with-systemd \
–with-uuid=e2fs \
–enable-thread-safety \
–with-segsize=2 \
–with-blocksize=8 \
–with-wal-blocksize=8 \
CFLAGS=”-O3 -march=native -pipe”

# 参数说明:
# –with-segsize=2:设置表文件段大小为2GB
# –with-blocksize=8:设置数据块大小为8KB(默认)
# –with-wal-blocksize=8:设置WAL块大小为8KB(默认)
# CFLAGS=”-O3 -march=native -pipe”:启用最高级别优化

4.1.2 调试版本编译配置

# 调试版本配置(用于开发测试)
$ ./configure –prefix=/postgresql/fgapp/pgsql-18-debug \
–enable-debug \
–enable-cassert \
–enable-depend \
–enable-nls \
CFLAGS=”-O0 -g3 -ggdb3″

# 参数说明:
# –enable-debug:启用调试符号
# –enable-cassert:启用断言检查
# –enable-depend:启用依赖跟踪
# –enable-nls:启用多语言支持
# CFLAGS=”-O0 -g3 -ggdb3″:禁用优化,生成完整调试信息

4.2 PostgreSQL数据库编译常见问题处理

4.2.1 configure阶段常见错误

# 错误1:readline库未找到
configure: error: readline library not found

# 解决方案
$ sudo dnf install -y readline-devel

# 错误2:zlib库未找到
configure: error: zlib library not found

# 解决方案
$ sudo dnf install -y zlib-devel

# 错误3:OpenSSL库未找到
configure: error: OpenSSL library not found

# 解决方案
$ sudo dnf install -y openssl-devel

# 错误4:ICU库未找到
configure: error: ICU library not found

# 解决方案
$ sudo dnf install -y libicu-devel

# 错误5:Python开发包未找到
configure: error: Python development files not found

# 解决方案
$ sudo dnf install -y python3-devel

4.2.2 make阶段常见错误

# 错误1:内存不足
virtual memory exhausted: Cannot allocate memory

# 解决方案:增加交换分区或减少并行编译数
$ make -j2 # 减少并行数

# 错误2:磁盘空间不足
No space left on device

# 解决方案:清理磁盘空间或更换编译目录
$ df -h
$ rm -rf /tmp/*

# 错误3:编译器版本不兼容
error: unrecognized command line option ‘-std=c11’

# 解决方案:升级GCC编译器
$ gcc –version
$ sudo dnf install -y gcc-toolset-11
$ scl enable gcc-toolset-11 bash

4.3 PostgreSQL数据库编译优化技巧

4.3.1 编译器优化选项

# CPU特定优化
$ export CFLAGS=”-O3 -march=native -mtune=native -pipe”
$ export CXXFLAGS=”-O3 -march=native -mtune=native -pipe”

# 链接时优化(LTO)
$ export CFLAGS=”-O3 -flto”
$ export LDFLAGS=”-flto”

# 内存优化
$ export CFLAGS=”-O3 -fno-omit-frame-pointer”

# 完整优化配置示例
$ ./configure –prefix=/postgresql/fgapp/pgsql-18 \
–with-openssl \
–with-icu \
–enable-thread-safety \
CFLAGS=”-O3 -march=native -mtune=native -pipe -fno-omit-frame-pointer” \
LDFLAGS=”-Wl,-z,relro,-z,now”

4.3.2 编译时间优化

# 使用ccache加速编译
$ sudo dnf install -y ccache
$ export PATH=”/usr/lib64/ccache:$PATH”
$ export CCACHE_DIR=”/tmp/ccache”

# 设置ccache大小
$ ccache -M 5G

# 使用distcc分布式编译(多机编译)
$ sudo dnf install -y distcc
$ export DISTCC_HOSTS=”fgedu.net.cn1,fgedu.net.cn2,fgedu.net.cn3″
$ make -j20 CC=distcc

# 清理并重新编译
$ make clean
$ make -j$(nproc)

风哥提示:生产环境编译时建议使用-O3优化级别,调试环境使用-O0禁用优化。使用ccache可显著加速重复编译。from PostgreSQL:www.itpux.com

Part05-风哥经验总结与分享

5.1 PostgreSQL数据库源码安装最佳实践

PostgreSQL数据库源码安装最佳实践风哥教程风哥教程风哥教程总结:

  • 安装前准备:确保所有依赖包已安装,避免编译中断
  • 目录规划:将安装目录和数据目录分开,便于维护
  • 功能选择:根据实际需求启用必要功能,避免过度编译
  • 优化编译:生产环境使用-O3优化,调试环境使用-O0
  • 扩展安装:务必安装contrib目录下的扩展模块
  • 版本管理:保留源码目录,便于后续重新编译

5.2 PostgreSQL数据库源码编译检查清单

# PostgreSQL源码编译检查清单

## 编译前检查
□ 源码包下载完整
□ MD5校验通过
□ 编译器已安装(gcc/g++)
□ 必需依赖包已安装
□ 可选依赖包已安装
□ 磁盘空间充足(至少1GB)

## 编译过程检查
□ configure执行成功
□ 配置参数正确
□ make编译成功
□ make install安装成功
□ contrib扩展安装成功

## 编译后检查
□ 安装目录结构正确
□ 可执行文件存在
□ 版本号正确
□ 环境变量配置正确
□ 数据库初始化成功

5.3 PostgreSQL数据库编译调试工具推荐

PostgreSQL数据库编译调试相关工具推荐:

  • ccache:编译器缓存,加速重复编译
  • distcc:分布式编译,多机并行
  • gdb:GNU调试器,调试PostgreSQL
  • valgrind:内存检测工具
  • strace:系统调用跟踪
  • perf:性能分析工具
风哥风哥教程风哥教程风哥教程总结:源码安装虽然比二进制安装复杂,但提供了更大的灵活性。风哥教程针对风哥教程针对风哥教程针对生产环境建议根据实际需求选择合适的编译参数,确保功能完整和性能最优。更多视频教程www.fgedu.net.cn

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息