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

17.7. 特定平台说明 #

本节介绍有关 PostgreSQL 安装和配置的其他平台特定问题。请务必阅读安装说明,特别是第 17.1 节。另外,请参阅第 31 章,了解回归测试结果的解释。

此处未涵盖的平台没有已知的特定平台安装问题。

17.7.1. Cygwin #

可以使用 Cygwin(Windows 上的类 Linux 环境)来构建 PostgreSQL,但该方法不如原生 Windows 构建,并且不再推荐在 Cygwin 下运行服务器。

从源代码构建时,请按照类 Unix 的安装过程进行(即 ./configure; make;等),注意以下 Cygwin 特有的差异:

  • 在 Windows 实用程序之前设置您的路径,使其使用 Cygwin 的 bin 目录。这有助于避免编译问题。

  • 不支持 adduser 命令;请使用 Windows 上相应的用户管理应用程序。否则,请跳过此步骤。

  • 不支持 su 命令;请使用 ssh 在 Windows 上模拟 su。否则,请跳过此步骤。

  • OpenSSL 不受支持。

  • 启动 cygserver 以支持共享内存。为此,请输入命令 /usr/sbin/cygserver &。每次启动 PostgreSQL 服务器或初始化数据库集群(initdb)时,此程序都需要运行。默认的 cygserver 配置可能需要更改(例如,增加 SEMMNS),以防止 PostgreSQL 因缺少系统资源而失败。

  • 在某些使用非 C 区域设置的系统上,构建可能会失败。要解决此问题,请在构建之前通过执行 export LANG=C.utf8 将区域设置设置为 C,然后在安装 PostgreSQL 后将其恢复为之前的设置。

  • 并行回归测试(make check)可能会由于 listen() 积压队列溢出而产生错误的回归测试失败,这会导致连接被拒绝错误或挂起。您可以使用 make 变量 MAX_CONNECTIONS 来限制连接数,如下所示:

    make MAX_CONNECTIONS=5 check
    

    (在某些系统上,您最多可以同时建立约 10 个连接。)

可以将 cygserver 和 PostgreSQL 服务器安装为 Windows NT 服务。有关如何执行此操作的信息,请参阅 Cygwin 上 PostgreSQL 二进制包中包含的 README 文档。它安装在 /usr/share/doc/Cygwin 目录中。

17.7.2. macOS #

要在 macOS 上从源代码构建 PostgreSQL,您需要安装 Apple 的命令行开发工具,可以通过发出以下命令来完成:

xcode-select --install

(请注意,这将弹出一个 GUI 对话框以进行确认)。您可能希望安装 Xcode,也可能不希望。

在最近的 macOS 版本中,有必要在用于查找某些系统头文件的 include 开关中嵌入“sysroot”路径。这会导致 configure 脚本的输出根据 configure 期间使用的 SDK 版本而变化。在简单场景下,这不会造成任何问题,但如果您尝试在与服务器代码构建不同的机器上构建扩展,则可能需要强制使用不同的 sysroot 路径。为此,请设置 PG_SYSROOT,例如:

make PG_SYSROOT=/desired/path all

要找出您机器上的适当路径,请运行:

xcrun --show-sdk-path

请注意,使用与核心服务器构建时不同的 sysroot 版本构建扩展不被强烈推荐;在最坏的情况下,这可能会导致难以调试的 ABI 不一致。

您也可以在配置时选择非默认 sysroot 路径,方法是将 PG_SYSROOT 指定给 configure

./configure ... PG_SYSROOT=/desired/path

这主要用于交叉编译到其他 macOS 版本。不能保证生成的可执行文件将在当前主机上运行。

要完全禁用 -isysroot 选项,请使用:

./configure ... PG_SYSROOT=none

(任何不存在的路径名都可以。)这在您希望使用非 Apple 编译器进行构建时可能很有用,但请注意,PostgreSQL 开发人员不会测试或支持这种情况。

macOS 的“系统完整性保护”(SIP)功能会破坏 make check,因为它阻止将 DYLD_LIBRARY_PATH 的必需设置传递给正在测试的可执行文件。您可以通过在 make check 之前执行 make install 来解决此问题。不过,大多数 PostgreSQL 开发人员都会关闭 SIP。

17.7.3. MinGW #

可以使用 MinGW(Windows 上的类 Unix 构建环境)来构建 Windows 版 PostgreSQL。建议使用 MSYS2 环境进行此操作,并安装任何必需的软件包。

17.7.3.1. 收集崩溃转储 #

如果 Windows 上的 PostgreSQL 崩溃,它能够生成 minidumps,这些转储可用于追踪崩溃原因,类似于 Unix 上的核心转储。这些转储可以使用 Windows Debugger ToolsVisual Studio 读取。要启用 Windows 上的转储生成,请在集群数据目录中创建一个名为 crashdumps 的子目录。然后,转储将写入此目录,文件名唯一,基于崩溃进程的标识符和崩溃时的当前时间。

17.7.4. Solaris #

PostgreSQL 在 Solaris 上得到了很好的支持。您的操作系统越新,遇到的问题就越少。

17.7.4.1. 必需的工具 #

您可以使用 GCC 或 Sun 的编译器套件进行构建。为了获得更好的代码优化,强烈建议在 SPARC 架构上使用 Sun 的编译器。如果您使用 Sun 的编译器,请注意不要选择 /usr/ucb/cc;请使用 /opt/SUNWspro/bin/cc

您可以从 https://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/ 下载 Sun Studio。许多 GNU 工具已集成到 Solaris 10 中,或者存在于 Solaris 伴侣 CD 上。如果您需要旧版 Solaris 的软件包,可以在 http://www.sunfreeware.com 找到这些工具。如果您偏好源代码,请查看 https://gnu.ac.cn/prep/ftp

17.7.4.2. configure 抱怨测试程序失败 #

如果 configure 抱怨测试程序失败,这很可能是运行时链接器无法找到某个库,可能是 libz、libreadline 或其他非标准库(如 libssl)。要将其指向正确的位置,请在 configure 命令行的 LDFLAGS 环境变量中进行设置,例如:

configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"

有关更多信息,请参阅 ld 手册页。

17.7.4.3. 编译以获得最佳性能 #

在 SPARC 架构上,强烈建议使用 Sun Studio 进行编译。尝试使用 -xO5 优化标志来生成显著更快的二进制文件。不要使用任何会修改浮点运算和 errno 处理行为的标志(例如 -fast)。

如果您没有理由在 SPARC 上使用 64 位二进制文件,请优先选择 32 位版本。64 位操作速度较慢,64 位二进制文件比 32 位变体速度慢。另一方面,AMD64 CPU 系列上的 32 位代码不是原生支持的,因此在该 CPU 系列上 32 位代码速度明显较慢。

17.7.4.4. 使用 DTrace 跟踪 PostgreSQL #

是的,可以使用 DTrace。有关详细信息,请参阅第 27.5 节

如果您看到 postgres 可执行文件的链接中止,并出现类似以下内容的错误消息:

Undefined                       first referenced
 symbol                             in file
AbortTransaction                    utils/probes.o
CommitTransaction                   utils/probes.o
ld: fatal: Symbol referencing errors. No output written to postgres
collect2: ld returned 1 exit status
make: *** [postgres] Error 1

您的 DTrace 安装太旧,无法处理静态函数中的探针。您需要 Solaris 10u4 或更高版本才能使用 DTrace。

17.7.5. Visual Studio #

建议大多数用户下载 Windows 的二进制发行版,该发行版在 PostgreSQL 网站 https://postgresql.ac.cn/download/ 上提供图形安装程序包。从源代码构建仅适用于开发 PostgreSQL 或扩展的人员。

可以使用 Meson 构建 Windows 版 PostgreSQL(如第 17.4 节中所述)。原生 Windows 移植需要 Windows 10 或更高版本的 32 位或 64 位版本。

原生构建的 psql 不支持命令行编辑。Cygwin 构建支持命令行编辑,因此应在需要 psqlWindows 上进行交互式使用时使用它。

可以使用 Microsoft 的 Visual C++ 编译器套件构建 PostgreSQL。这些编译器可以来自 Visual StudioVisual Studio Express 或某些版本的 Microsoft Windows SDK。如果您还没有设置 Visual Studio 环境,最简单的方法是使用 Visual Studio 2022 中的编译器或 Windows SDK 10 中的编译器,它们都可以从 Microsoft 免费下载。

使用 Microsoft 编译器套件可以进行 32 位和 64 位构建。使用 Visual Studio 2015Visual Studio 2022 以及独立的 Windows SDK 版本 10 及更高版本可以构建 32 位 PostgreSQL。使用 Microsoft Windows SDK 版本 10 及更高版本或 Visual Studio 2015 及更高版本支持 64 位 PostgreSQL 构建。

如果您的构建环境没有附带受支持的 Microsoft Windows SDK 版本,建议您升级到最新版本(目前是版本 10),可从 https://www.microsoft.com/download 下载。

您必须始终包含 SDK 的“Windows Headers and Libraries”部分。如果您安装的 Windows SDK 包含“Visual C++ Compilers”,则不需要 Visual Studio 即可构建。请注意,从 8.0a 版本开始,Windows SDK 不再附带完整的命令行构建环境。

17.7.5.1. 要求 #

要在 Windows 上构建 PostgreSQL,还需要以下附加产品:

Strawberry Perl

运行构建生成脚本需要 Strawberry Perl。MinGW 或 Cygwin Perl 不可用。它还必须在 PATH 中。可以从 https://strawberryperl.com 下载二进制文件。

BisonFlex

可以从 https://github.com/lexxmark/winflexbison 下载 BisonFlex 的二进制文件。

以下附加产品不是入门所必需的,但构建完整包是必需的:

Magicsplat Tcl

构建 PL/Tcl 所需。可以从 https://www.magicsplat.com/tcl-installer/index.html 下载二进制文件。

Diff

运行回归测试需要 Diff,可以从 http://gnuwin32.sourceforge.net 下载。

Gettext

构建 NLS 支持需要 Gettext,可以从 http://gnuwin32.sourceforge.net 下载。请注意,需要二进制文件、依赖项和开发文件。

MIT Kerberos

GSSAPI 身份验证支持所需。MIT Kerberos 可从 https://web.mit.edu/Kerberos/dist/index.html 下载。

libxml2libxslt

XML 支持所需。可以从 https://zlatkovic.com/pub/libxml 下载二进制文件,或从 http://xmlsoft.org 下载源代码。请注意,libxml2 需要 iconv,后者可在同一下载位置获得。

LZ4

支持 LZ4 压缩所需。可以从 https://github.com/lz4/lz4/releases 下载二进制文件和源代码。

Zstandard

支持 Zstandard 压缩所需。可以从 https://github.com/facebook/zstd/releases 下载二进制文件和源代码。

OpenSSL

SSL 支持所需。可以从 https://slproweb.com/products/Win32OpenSSL.html 下载二进制文件,或从 https://www.openssl.org 下载源代码。

ossp-uuid

UUID-OSSP 支持(仅限 contrib)所需。源代码可从 http://www.ossp.org/pkg/lib/uuid/ 下载。

Python

构建 PL/Python 所需。可以从 https://pythonlang.cn 下载二进制文件。

zlib

pg_dumppg_restore 中的压缩支持所需。可以从 https://www.zlib.net 下载二进制文件。

17.7.5.2. 64 位 Windows 的特别注意事项 #

PostgreSQL 仅支持在 64 位 Windows 上构建 x64 架构。

不支持在同一个构建树中混合 32 位和 64 位版本。构建系统会自动检测其是在 32 位还是 64 位环境中运行,并相应地构建 PostgreSQL。因此,在构建之前启动正确的命令提示符非常重要。

要使用服务器端的第三方库(如 PythonOpenSSL),该库必须也是 64 位。不支持在 64 位服务器中加载 32 位库。PostgreSQL 支持的几个第三方库可能仅提供 32 位版本,在这种情况下,它们不能与 64 位 PostgreSQL 一起使用。

17.7.5.3. 收集崩溃转储 #

如果 Windows 上的 PostgreSQL 崩溃,它能够生成 minidumps,这些转储可用于追踪崩溃原因,类似于 Unix 上的核心转储。这些转储可以使用 Windows Debugger ToolsVisual Studio 读取。要启用 Windows 上的转储生成,请在集群数据目录中创建一个名为 crashdumps 的子目录。然后,转储将写入此目录,文件名唯一,基于崩溃进程的标识符和崩溃时的当前时间。

提交更正

如果您在文档中发现任何不正确之处、与您实际体验不符或需要进一步澄清的内容,请使用此表格报告文档问题。