2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

17.1. 要求 #

通常情况下,现代的类 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 已知可以在多种不同的供应商提供的编译器上编译。

  • 除了 gzipbzip2 之外,还需要 tar 来解压源代码分发包。

  • 需要 FlexBison。不能使用其他的 lexyacc 程序。Bison 需要至少 2.3 版本。

  • 在编译过程中以及运行一些测试套件时需要 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 发行版,请注意,您需要 readlinereadline-devel 包(如果您的发行版中它们是分开的)。

  • 默认使用 zlib 压缩库。如果您不想使用它,则必须向 configure 指定 --without-zlib 选项。使用此选项将禁用 pg_dumppg_restore 中对压缩归档的支持。

  • 默认使用 ICU 库。如果您不想使用它,则必须向 configure 指定 --without-icu 选项。使用此选项将禁用对 ICU 排序规则功能的支持(参见 第 23.2 节)。

    ICU 支持需要安装 ICU4C 包。目前 ICU4C 的最低要求版本是 4.2。

    默认情况下,将使用 pkg-config 来查找所需的编译选项。这支持 ICU4C 版本 4.6 及更高版本。对于旧版本,或者如果 pkg-config 不可用,则可以将变量 ICU_CFLAGSICU_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。某些操作系统内置了此功能(例如 LinuxNetBSDSolaris),对于其他系统,您可以从 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_compressionwal_compression

  • 如果您想支持使用 Zstandard 方法压缩数据,则需要 Zstandard;请参阅 wal_compression。最低要求版本是 1.4.0。

  • 要编译 PostgreSQL 文档,有单独的要求集;请参阅 第 J.2 节

如果您需要获取一个GNU包,您可以在本地找到GNU镜像站点(参见 https://gnu.ac.cn/prep/ftp 获取列表)或在 ftp://ftp.gnu.org/gnu/

提交更正

如果您在文档中看到任何不正确的内容、与您的具体功能体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。