本文章内容描述从源代码发布安装PostgreSQLCentOS Stream 9上编译安装PostgreSQL 17。
- 要求
- 1 编译PostgreSQL需要下列软件包:
- 要求GNU make版本3.80或以上;其他的make程序或更老的GNU make版本将不会工作(GNU make有时以名字gmake安装)。要测试GNU make可以输入:
make –version
- 你需要一个ISO/ANSI C 编译器(至少是 C99兼容的)。我们推荐使用最近版本的GCC。
- 需要flex 2.5.35或更高版本,Bison 2.3或更高版本。不能使用其他lex和yacc程序。
- 在构建过程中需要Perl 5.14或更高版本,并运行一些测试套件。
- 默认使用GNU Readline库。它允许psql( PostgreSQL命令行SQL解释器)记住您输入的每个命令,并允许您使用箭头键来回忆和编辑以前的命令。如果您不想使用它,则必须在 configure中指定--without-readline选项。您通常可以使用BSD许可的libedit库作为替代,最初 在NetBSD上开发。如果找不到libreadline,或者 使用--with-libedit-preferred作为 configure的选项,则使用libedit库。
- 默认使用zlib压缩库。如果你不想使用它,那么你必须指定配置的——without-zlib选项。使用此选项将禁用对压缩的支持pg_dump和pg_restore中的归档。
- 默认使用ICU库。如果不想使用它,那么必须指定——without-icu选项进行配置。使用此选项将禁用对ICU排序功能的支持。
1.2 可选包:
- 要构建服务器编程语言PL/Perl,您需要完整的Perl安装,包括Libperl库和头文件。所需的最低版本是Perl 5.14。
- 要构建PL/Python服务器编程语言,您需要使用头文件和sysconfig模块。最低要求的版本是Python 3.2。
- 要构建PL/Tcl过程语言,当然需要安装Tcl。最小需要的版本是Tcl 8.4。
- 启用本地语言支持(Native Language Support, NLS),即能够以除了英语之外的其他语言,您需要Gettext API的实现。
- 如果你想支持加密的客户端连接,你需要OpenSSL。最低要求的版本是1.0.2。
- 如果希望支持身份验证,则需要MIT Kerberos(用于GSSAPI)、OpenLDAP和/或PAM使用这些服务进行认证。
- Zstandard,如果你想用这个方法支持数据压缩,看wal_com_pression。最低要求的版本是1.4.0。
- 要构建PostgreSQL文档,有一组单独的要求。
2. 获取源码
https://ftp.postgresql.org/pub/source/v17.1/postgresql-17.2.tar.gz
3. 安装过程
3.1 配置
./configure 该脚本将运行许多测试来确定各种系统相关变量的值并检测操作系统的依赖变量,最后将在构建中创建几个文件树来记录它。默认时所有文件都将安装到/usr/local/pgsql
。
如果你想保持编译目录的独立,你也可以在一个源码树之外的目录中运行configure
,然后在那里构建。这个过程也被称为一个VPATH编译。做法如下:
mkdir build_dir
cd build_dir
/path/to/source/tree/configure [options go here]
make
3.2 Build
make
make install
- make world构建可以构建的所有内容,包括文档(HTML 和手册页)和附加模块(
contrib
)。 - make world-bin构建可以构建的所有内容,和附加模块,除了文档。
- 如果要从另一个 makefile 调用构建而不是手动调用,则必须取消设置
MAKELEVEL
或将其设置为零,例如:
build-postgresql:
$(MAKE) -C postgresql MAKELEVEL=0 all
3.3 回归测试
make check 如果您想在安装之前测试新构建的服务器,您可以在此时运行回归测试。 回归测试是一个测试套件,用于验证PostgreSQL 是否以开发人员期望的方式在您的机器上运行。
3.4 安装文件
make install 这会将文件安装到配置中指定的目录中。需要以 root 身份执行此步骤。 或者,您可以提前创建目标目录并安排授予适当的权限。
- make install-docs 安装文档(HTML 和手册页)
- make install-world 如果您构建了上面的文档,这也会安装文档。
- make install-world-bin 建除上述文档之外的所有内容。
- 可以使用
make install-strip
而不是make install
来剥离安装的可执行文件和库。这将节省一些空间。但它不知道如何从可执行文件中去除每个不需要的字节。
标准安装提供了客户机应用程序开发所需的所有头文件,以及用于服务器端程序开发,例如用C编写自定义函数或数据类型。
3.5 仅安装客户端
只想安装客户端应用程序和接口库:
make -C src/bin install
make -C src/include install
make -C src/interfaces install
make -C doc install
卸载:要撤消安装,请使用命令make uninstall
。但是,这不会删除任何创建的目录。
清理:
make clean
安装后,通过使用命令从源树中删除构建的文件来释放磁盘空间。 这将保留configure
程序生成的文件,以便您稍后可以使用make
重建所有内容。make distclean
将代码树重置为分发时的状态。如果要在同一源代码树中为多个平台构建, 则必须执行此操作并为每个平台重新配置。如果您执行构建然后发现您的configure
选项错误,或者如果您更改了configure
调查的任何内容(例如,软件升级),那么在重新配置和重建之前执行make distclean
是个好主意。
4. configure 选项
4.1安装位置
--prefix=PREFIX
把所有文件装在目录PREFIX
中而不是/usr/local/pgsql
中。
--exec-prefix=EXEC-PREFIX
把体系相关的文件安装到一个不同的前缀下(EXEC-PREFIX
),而不是PREFIX
中设置的地方。 这样做可以比较方便地在不同主机之间共享体系相关的文件
--bindir=DIRECTORY
为可执行程序指定目录。默认是EXEC-PREFIX
/bin
, 通常也就是/usr/local/pgsql/bin
。
--sysconfdir=DIRECTORY