本节介绍了有关 PostgreSQL 安装和设置的其他平台特定问题。请务必阅读安装说明,特别是第 17.1 节。另请查看第 31 章,了解关于如何解释回归测试结果的信息。
此处未涵盖的平台没有已知的特定于平台的安装问题。
可以使用 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
中。
要在 macOS 上从源代码构建 PostgreSQL,您需要安装 Apple 的命令行开发人员工具,可以通过发出以下命令来完成:
xcode-select --install
(请注意,这将弹出一个 GUI 对话框窗口进行确认)。您可能需要或可能不需要安装 Xcode。
在最近的 macOS 版本上,需要在用于查找某些系统头文件的包含开关中嵌入 “sysroot” 路径。这导致 configure 脚本的输出根据 configure 期间使用的 SDK 版本而变化。这在简单的场景中不应该造成任何问题,但如果您尝试执行类似在与构建服务器代码的计算机不同的计算机上构建扩展的操作,则可能需要强制使用不同的 sysroot 路径。为此,请设置 PG_SYSROOT
,例如:
make PG_SYSROOT=/desired/path
all
要查找计算机上的相应路径,请运行:
xcrun --show-sdk-path
请注意,不建议使用与构建核心服务器不同的 sysroot 版本构建扩展;在最坏的情况下,这可能会导致难以调试的 ABI 不一致性。
您还可以在配置时选择非默认的 sysroot 路径,方法是为 configure 指定 PG_SYSROOT
:
./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。
可以使用 MinGW(Microsoft 操作系统的类 Unix 构建环境)构建适用于 Windows 的 PostgreSQL。MinGW 构建过程使用本章中描述的正常构建系统。
可以从 http://www.mingw.org/ 下载 MinGW、类 Unix 的构建工具和 MSYS(运行类似 configure
的 shell 脚本所需的一组 Unix 工具)。两者都不是运行生成的二进制文件所必需的;它们仅用于创建二进制文件。
要使用 MinGW 构建 64 位二进制文件,请从 https://mingw-w64.org/ 安装 64 位工具集,将其 bin 目录放入 PATH
中,并使用 --host=x86_64-w64-mingw32
选项运行 configure
。
安装完所有内容后,建议您在 CMD.EXE
下运行 psql,因为 MSYS 控制台存在缓冲问题。
如果 Windows 上的 PostgreSQL 崩溃,它能够生成 minidumps,可用于跟踪崩溃的原因,类似于 Unix 上的核心转储。可以使用 Windows 调试器工具或使用 Visual Studio 读取这些转储。要在 Windows 上启用转储的生成,请在群集数据目录中创建一个名为 crashdumps
的子目录。然后,转储将以基于崩溃进程的标识符和崩溃的当前时间的唯一名称写入此目录。
PostgreSQL 在 Solaris 上得到很好的支持。您的操作系统越新,您遇到的问题就越少。
您可以使用 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://www.gnu.org/prep/ftp。
如果 configure
抱怨测试程序失败,这可能是因为运行时链接器无法找到某些库,可能是 libz、libreadline 或其他一些非标准库,例如 libssl。要将其指向正确的位置,请在 configure
命令行上设置 LDFLAGS
环境变量,例如:
configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"
有关更多信息,请参阅 ld 手册页。
在 SPARC 架构上,强烈建议使用 Sun Studio 进行编译。尝试使用 -xO5
优化标志以生成速度明显更快的二进制文件。不要使用任何修改浮点运算和 errno
处理行为的标志(例如,-fast
)。
如果在 SPARC 架构上没有使用 64 位二进制文件的理由,请优先选择 32 位版本。64 位操作速度较慢,且 64 位二进制文件比 32 位版本慢。另一方面,AMD64 CPU 系列上的 32 位代码不是原生代码,因此在该 CPU 系列上 32 位代码的速度明显较慢。
是的,可以使用 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。
建议大多数用户下载 Windows 的二进制发行版,该发行版可以从 PostgreSQL 网站 https://postgres.ac.cn/download/ 下载图形安装包。从源代码构建仅适用于开发 PostgreSQL 或扩展的人员。
可以使用 Meson 构建用于 Visual Studio 的 Windows 版 PostgreSQL,如第 17.4 节所述。原生 Windows 端口需要 32 位或 64 位版本的 Windows 10 或更高版本。
psql 的原生版本不支持命令行编辑。Cygwin 版本支持命令行编辑,因此在 Windows 上需要交互式使用 psql 时应使用该版本。
可以使用 Microsoft 的 Visual C++ 编译器套件构建 PostgreSQL。这些编译器可以来自 Visual Studio、Visual Studio Express 或某些版本的 Microsoft Windows SDK。如果您尚未设置 Visual Studio 环境,最简单的方法是使用 Visual Studio 2022 中的编译器或 Windows SDK 10 中的编译器,这两者都可以从 Microsoft 免费下载。
Microsoft 编译器套件可以构建 32 位和 64 位版本。可以使用 Visual Studio 2015 到 Visual 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 标头和库部分。如果您安装的 Windows SDK 包含Visual C++ 编译器,则无需 Visual Studio 即可进行构建。请注意,从 8.0a 版本开始,Windows SDK 不再附带完整的命令行构建环境。
在 Windows 上构建 PostgreSQL 需要以下其他产品。
需要 Strawberry Perl 才能运行构建生成脚本。MinGW 或 Cygwin Perl 将不起作用。它也必须存在于 PATH 中。可以从 https://strawberryperl.com 下载二进制文件。
需要 Bison 和 Flex。只有 Bison 2.3 及更高版本才能工作。Flex 必须是 2.5.35 或更高版本。
Bison 和 Flex 都包含在 msys 工具套件中,该套件可从 http://www.mingw.org/wiki/MSYS 下载,作为 MinGW 编译器套件的一部分。
您需要将包含 flex.exe
和 bison.exe
的目录添加到 PATH 环境变量。对于 MinGW,该目录是 MinGW 安装目录的 \msys\1.0\bin
子目录。
GnuWin32 的 Bison 发行版似乎存在一个错误,当安装在名称中包含空格的目录中时(例如英语安装上的默认位置 C:\Program Files\GnuWin32
),会导致 Bison 发生故障。考虑安装到 C:\GnuWin32
或在您的 PATH 环境变量设置中使用 GnuWin32 的 NTFS 短名称路径(例如,C:\PROGRA~1\GnuWin32
)。
以下附加产品不是入门所需的,但是构建完整包是必需的。
构建 PL/Tcl 需要。可以从 https://www.magicsplat.com/tcl-installer/index.html 下载二进制文件。
运行回归测试需要 Diff,可以从 http://gnuwin32.sourceforge.net 下载。
使用 NLS 支持进行构建需要 Gettext,可以从 http://gnuwin32.sourceforge.net 下载。请注意,需要二进制文件、依赖项和开发人员文件。
GSSAPI 身份验证支持需要。可以从 https://web.mit.edu/Kerberos/dist/index.html 下载 MIT Kerberos。
XML 支持需要。可以从 https://zlatkovic.com/pub/libxml 下载二进制文件,或从 http://xmlsoft.org 下载源代码。请注意,libxml2 需要 iconv,可以从相同的下载位置获取。
支持 LZ4 压缩需要。可以从 https://github.com/lz4/lz4/releases 下载二进制文件和源代码。
支持 Zstandard 压缩需要。可以从 https://github.com/facebook/zstd/releases 下载二进制文件和源代码。
SSL 支持需要。可以从 https://slproweb.com/products/Win32OpenSSL.html 下载二进制文件,或从 https://www.openssl.org 下载源代码。
UUID-OSSP 支持需要(仅限 contrib)。可以从 http://www.ossp.org/pkg/lib/uuid/ 下载源代码。
构建 PL/Python 需要。可以从 https://pythonlang.cn 下载二进制文件。
pg_dump 和 pg_restore 中的压缩支持需要。可以从 https://www.zlib.net 下载二进制文件。
PostgreSQL 只能在 64 位 Windows 上的 x64 架构上构建。
不支持在同一构建树中混合使用 32 位和 64 位版本。构建系统会自动检测它是在 32 位还是 64 位环境中运行,并相应地构建 PostgreSQL。因此,在构建之前启动正确的命令提示符非常重要。
要使用服务器端的第三方库(如 Python 或 OpenSSL),此库必须也是 64 位的。不支持在 64 位服务器中加载 32 位库。PostgreSQL 支持的几个第三方库可能只有 32 位版本,在这种情况下,它们不能与 64 位 PostgreSQL 一起使用。
如果 Windows 上的 PostgreSQL 崩溃,它能够生成 minidumps,可用于跟踪崩溃的原因,类似于 Unix 上的核心转储。可以使用 Windows 调试器工具或使用 Visual Studio 读取这些转储。要在 Windows 上启用转储的生成,请在群集数据目录中创建一个名为 crashdumps
的子目录。然后,转储将以基于崩溃进程的标识符和崩溃的当前时间的唯一名称写入此目录。
如果您在文档中发现任何不正确、与您使用特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。