一般而言,一个现代的与 Unix 兼容的平台应该能运行 PostgreSQL。在发布时经过专门测试的平台在下面的 第 17.6 节 中进行了描述。
构建 PostgreSQL 需要以下软件包
GNU make 3.81 或更高版本是必需的;其他 make 程序或更旧的GNU make 版本将 不会 起作用。 (GNU make 有时候会以 gmake
安装。要测试GNU make,输入
make --version
另一种方法是,可以使用 Meson 构建 PostgreSQL。这目前处于实验阶段。如果你选择使用 Meson,那么不需要GNU make,但下面列出的其他要求仍然适用。
Meson 的最低要求版本是 0.54。
你需要一个ISO/ANSIC 编译器(至少兼容 C99)。推荐使用 GCC 的最新版本,但据了解,PostgreSQL 可以使用来自不同供应商的多种编译器进行构建。
除了 gzip 或 bzip2,还需要 tar 来解压源代码分布包。
需要 Flex 2.5.35 或更高版本,以及 Bison 2.3 或更高版本。不能使用其他 lex 和 yacc 程序。
在构建过程中以及运行一些测试套件时需要 Perl 5.14 或更高版本。(这是与构建 PL/Perl 需求不同的需求;请参见下方。)
在GNU Readline库默认情况下被使用。它允许psql(PostgreSQL命令行SQL解释器)记住你键入的每个命令,并允许你使用箭头键来回想和编辑以前命令。这非常有用,强烈推荐。如果你不想使用它,那么你必须指定--without-readline
选项来configure
。作为替代,你通常可以使用BSD授权libedit
库,最初是在NetBSD上开发的。libedit
库与GNUReadline兼容,并且在未找到libreadline
或将--with-libedit-preferred
用作configure
选项时使用。如果你正在使用基于包的Linux发行版,请注意,如果你所在的发行版中它们是独立的话,你需要readline
和readline-devel
两个包。
zlib压缩库默认情况下被使用。如果你不想使用它,那么你必须指定--without-zlib
选项来configure
。使用此选项将禁用pg_dump和pg_restore中对压缩存档的支持。
ICU库默认情况下被使用。如果你不想使用它,那么你必须指定--without-icu
选项来configure
。使用此选项将禁用对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,则应确保 Perl 安装已在启用 usemultiplicity
选项的情况下构建(perl -V
可以显示是否启用该选项)。
要构建 PL/Python 服务器编程语言,您需要一个具有头文件和 sysconfig 模块的 Python 安装。最低要求的版本是 Python 3.2。
由于 PL/Python 将成为共享库,因此在大多数平台上, libpython
库也必须是一个共享库。从源构建的默认 Python 安装中没有该库,但在很多操作系统发行版中提供了共享库。configure
会在选中构建 PL/Python 但无法找到共享 libpython
时失败。这可能意味着您需要安装附加包,或者重新构建 Python 安装(的部分)以提供此共享库。从源构建时,使用 --enable-shared
标志运行 Python 的配置。
要构建 PL/Tcl 过程语言,您当然需要一个 Tcl 安装。最低要求的版本是 Tcl 8.4。
要启用本机语言支持(NLS),即用英语之外的语言显示程序消息的能力,您需要 Gettext 的实现API。某些操作系统已内置此功能(例如,Linux、NetBSD、Solaris),对于其他系统,你可以从以下位置下载附加包:https://www.gnu.org/software/gettext/。如果你正在中使用Gettext实现GNUC库,则你还需要GNU Gettext包来使用某些实用程序。对于任何其他实现,你都不需要它。
如果你要支持加密客户端连接,则需要OpenSSL。OpenSSL也是在没有/dev/urandom
(Windows除外)的平台上生成随机数所必需的。最低所需版本为1.0.2。
如果你要使用这些服务支持身份验证,则需要MIT Kerberos (用于GSSAPI)、OpenLDAP和/或PAM。
如果你要使用该方法支持数据压缩,则需要LZ4;请参阅default_toast_compression和wal_compression。
如果你要使用该方法支持数据压缩,则需要Zstandard;请参阅wal_compression。最低所需版本为1.4.0。
要构建PostgreSQL文档,需要一组单独的要求;请参阅第J.2节。
如果你需要获取GNU包,可以在本地的GNU镜像站点找到(有关列表,请参阅https://www.gnu.org/prep/ftp)或ftp://ftp.gnu.org/gnu/。