通常情况下,现代的类 Unix 平台都可以运行 PostgreSQL。在发布时经过具体测试的平台将在下面的 第 17.6 节中描述。
编译 PostgreSQL 需要以下软件包
GNU make 版本 3.81 或更高版本是必需的;其他 make 程序或更早的版本GNU make 版本将 不 工作。(GNU make 有时会以 gmake
的名称安装。)要测试GNU make,请输入
make --version
或者,PostgreSQL 可以使用 Meson 构建。这是使用 Visual Studio 在 Windows 上构建 PostgreSQL 的唯一选项。对于其他平台,使用 Meson 目前仍处于实验阶段。如果您选择使用 Meson,则您不需要GNU make,但下面的其他要求仍然适用。
Meson 的最低要求版本是 0.54。
您需要一个ISO/ANSIC 编译器(至少支持 C99)。推荐使用最新的 GCC 版本,但 PostgreSQL 已知可以在多种不同的供应商提供的编译器上编译。
除了 gzip 或 bzip2 之外,还需要 tar 来解压源代码分发包。
在编译过程中以及运行一些测试套件时需要 Perl 5.14 或更高版本。(此要求独立于编译 PL/Perl 的要求;参见下文。)
默认使用GNU Readline 库。它允许 psql(PostgreSQL 命令行 SQL 解释器)记住您输入的每个命令,并允许您使用箭头键来回忆和编辑之前的命令。这非常有用,强烈推荐。如果您不想使用它,则必须向 configure
指定 --without-readline
选项。作为替代,您通常可以使用 BSD 许可的 libedit
库,该库最初是在 NetBSD 上开发的。libedit
库与 GNU Readline 兼容,如果在找不到 libreadline
时,或者将 --with-libedit-preferred
指定为 configure
的选项时,它将被使用。如果您使用的是基于包的 Linux 发行版,请注意,您需要 readline
和 readline-devel
包(如果您的发行版中它们是分开的)。
默认使用 zlib 压缩库。如果您不想使用它,则必须向 configure
指定 --without-zlib
选项。使用此选项将禁用 pg_dump 和 pg_restore 中对压缩归档的支持。
默认使用 ICU 库。如果您不想使用它,则必须向 configure
指定 --without-icu
选项。使用此选项将禁用对 ICU 排序规则功能的支持(参见 第 23.2 节)。
ICU 支持需要安装 ICU4C 包。目前 ICU4C 的最低要求版本是 4.2。
默认情况下,将使用 pkg-config 来查找所需的编译选项。这支持 ICU4C 版本 4.6 及更高版本。对于旧版本,或者如果 pkg-config 不可用,则可以将变量 ICU_CFLAGS
和 ICU_LIBS
指定给 configure
,例如:
./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
(如果 ICU4C 在编译器的默认搜索路径中,您仍然需要指定非空字符串以避免使用 pkg-config,例如 ICU_CFLAGS=' '
。)
以下包是可选的。在默认配置中它们不是必需的,但在启用某些编译选项时它们是必需的,如下所述
要编译服务器编程语言 PL/Perl,您需要一个完整的 Perl 安装,包括 libperl
库和头文件。最低要求版本是 Perl 5.14。由于 PL/Perl 将是一个共享库,因此在大多数平台上 libperl
库也必须是共享库。Perl 的最新版本中这似乎是默认设置,但在早期版本中则不是,无论如何,这取决于安装 Perl 的人员的选择。configure
如果选择了编译 PL/Perl 但找不到共享的 libperl
,则会失败。在这种情况下,您必须手动重新编译和安装 Perl 才能编译 PL/Perl。在 Perl 的配置过程中,请请求一个共享库。
如果您打算对 PL/Perl 进行 incidental 以外的使用,您应该确保 Perl 安装是用 usemultiplicity
选项启用的(perl -V
会显示是否是这种情况)。
要编译 PL/Python 服务器编程语言,您需要一个带有头文件和 sysconfig 模块的 Python 安装。最低支持版本是 Python 3.6.8。
由于 PL/Python 将是一个共享库,因此在大多数平台上 libpython
库也必须是共享库。默认情况下,从源代码构建的 Python 安装不是这种情况,但在许多操作系统发行版中都提供了共享库。configure
如果选择了编译 PL/Python 但找不到共享的 libpython
,则会失败。这可能意味着您需要安装额外的软件包或重新编译(部分)您的 Python 安装以提供此共享库。从源代码构建时,请使用 --enable-shared
标志运行 Python 的 configure。
要编译 PL/Tcl 过程语言,您当然需要一个 Tcl 安装。最低要求版本是 Tcl 8.4。
要启用本机语言支持(NLS),即,以非英语语言显示程序消息的能力,您需要一个 Gettext 的实现API。某些操作系统内置了此功能(例如 Linux、NetBSD、Solaris),对于其他系统,您可以从 https://gnu.ac.cn/software/gettext/ 下载附加包。如果您在GNUC 库中使用 Gettext 实现,那么您将另外需要 GNU Gettext 包用于某些实用程序。对于其他任何实现,您将不需要它。
如果您想支持加密的客户端连接,则需要 OpenSSL。对于没有 /dev/urandom
的平台(Windows 除外),OpenSSL 也用于随机数生成。最低要求版本是 1.1.1。
此外,使用 OpenSSL 兼容层支持 LibreSSL。最低要求版本是 3.4(来自 OpenBSD 7.0 版本)。
如果您想支持使用这些服务的身份验证,则需要 MIT Kerberos(用于 GSSAPI)、OpenLDAP 和/或 PAM。
您需要 Curl 来构建一个可选模块,该模块为客户端应用程序实现了 OAuth 设备授权流。
如果您想支持使用 LZ4 方法压缩数据,则需要 LZ4;请参阅 default_toast_compression 和 wal_compression。
如果您想支持使用 Zstandard 方法压缩数据,则需要 Zstandard;请参阅 wal_compression。最低要求版本是 1.4.0。
要编译 PostgreSQL 文档,有单独的要求集;请参阅 第 J.2 节。
如果您需要获取一个GNU包,您可以在本地找到GNU镜像站点(参见 https://gnu.ac.cn/prep/ftp 获取列表)或在 ftp://ftp.gnu.org/gnu/。
如果您在文档中看到任何不正确的内容、与您的具体功能体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。