受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

Chapter 17. 从源代码安装

本章介绍如何使用源代码发布包安装 PostgreSQL。如果你安装的是预打包的发行版, 例如 RPM 或 Debian 软件包,请忽略本章,改为参见 Chapter 16

17.1. 需求 #

一般来说,现代的 Unix 兼容平台都应当能够运行 PostgreSQL。在发布时经过专门测试的平台, 见下文 Section 17.6

构建 PostgreSQL 需要下列软件包:

  • 需要 GNU make 3.81 或更高版本; 其他 make 程序或较旧版本的 GNU make无法工作。(GNU make 有时会以 gmake 这个名字安装。)要检查是否为 GNU make,请输入:

    make --version
    
  • 另一种方式是使用 Meson 构建 PostgreSQL。这是在 Windows 上通过 Visual Studio 构建 PostgreSQL 的唯一方法。对于其他平台, 使用 Meson 目前仍属于实验性功能。如果你选择使用 Meson,则不需要 GNU make,但下面列出的其他要求仍然适用。

    Meson 的最低要求版本是 0.54。

  • 你需要一个 ISO/ANSI C 编译器 (至少符合 C99)。推荐使用较新的 GCC 版本,不过已知 PostgreSQL 也可以使用 来自不同厂商的多种编译器构建。

  • 需要 tar 来解开源代码发布包,此外还需要 gzipbzip2 之一。

  • 需要 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,或者在 configure 中使用了 --with-libedit-preferred 选项,就会使用它。如果你使用的是 基于软件包的 Linux 发行版,请注意,如果你的发行版把它们拆成单独的软件包, 那么需要同时安装 readlinereadline-devel

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

  • 默认使用 ICU 库。如果你不想使用它,则必须给 configure 指定 --without-icu 选项。使用这个选项将禁用 ICU 排序规则特性的支持(见 Section 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 的人是如何选择的。 如果选择构建 PL/Perl,但 configure 找不到共享的 libperl,则配置将失败。在这种情况下, 你必须手动重新构建并安装 Perl, 才能构建 PL/Perl。在配置 Perl 时,请要求生成共享库。

    如果你打算不仅仅是偶尔使用 PL/Perl, 应确保 Perl 安装是在启用了 usemultiplicity 选项的情况下构建的 (perl -V 会显示这一点)。

  • 要构建 PL/Python 服务器端编程语言, 你需要带有头文件以及 sysconfig 模块的 Python 安装。最低支持版本是 Python 3.6.8。

    由于 PL/Python 是一个共享库,在大多数平台上, libpython 也必须是共享库。默认情况下, 从源代码构建的 Python 安装并非如此, 但很多操作系统发行版提供了共享库。如果选择构建 PL/Python,但 configure 找不到共享的 libpython,则配置将失败。这可能意味着你要么需要安装 额外的软件包,要么需要重新构建(部分)Python 安装,以提供这个共享库。从源代码构建时,请在运行 Python 的 configure 时加上 --enable-shared 标志。

  • 要构建 PL/Tcl 过程语言,你当然需要安装 Tcl。最低要求版本是 Tcl 8.4。

  • 要启用本地语言支持(NLS),也就是以非英语语言显示程序消息的能力, 你需要一个 Gettext API 的实现。某些操作系统已内置此功能(例如 LinuxNetBSDSolaris);对于其他系统, 你可以从 https://www.gnu.org/software/gettext/ 下载附加软件包。 如果你使用的是 GNU C 库中的 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; 见 default_toast_compressionwal_compression

  • 如果你希望支持用该方法压缩数据,就需要 Zstandard; 见 wal_compression。 最低要求版本是 1.4.0。

  • 要构建 PostgreSQL 文档,还需要满足另一组要求; 见 Section J.2

如果你需要获取 GNU 软件包,可以从本地的 GNU 镜像站点获取(站点列表见 https://www.gnu.org/prep/ftp),或者直接从 ftp://ftp.gnu.org/gnu/ 获取。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。