选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 16 / 15 / 14
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

第 16 章 在 Windows 上从源代码安装

建议大多数用户下载适用于 Windows 的二进制发行版,它可以从 PostgreSQL 网站获得一键安装程序包。从 源码构建仅面向开发 PostgreSQL 或扩展 的人员。

Windows 上构建 PostgreSQL 有几种 不同的方法。使用 Microsoft 工具进行构建的最简单方式,是安装 受支持版本的 Microsoft Platform SDK 并使用其自带的 编译器。也可以使用完整的 Microsoft Visual C++ 2005 或 2008 进行 构建。在某些情况下,除编译器之外还需要安装 Platform SDK

也可以使用 MinGW 提供的 GNU 编译器 工具构建 PostgreSQL,或者在较旧版本的 Windows 上使用 Cygwin

最后,客户端访问库(libpq)可以用 Visual C++ 7.1Borland C++ 构建,以便与用这些工具 构建的静态链接应用兼容。

使用 MinGWCygwin 构建时采用常规构建系统,参见 第 15 章 以及 第 15.8.5 节第 15.8.2 节 中的具体说明。 这两种构建无法生成 64 位二进制文件。不推荐使用 Cygwin,它只应用于原生构建无法工作的 较旧版本 Windows,例如 Windows 98。只有在用 MinGW 构建其他模块时才推荐使用它。 官方二进制文件是使用 Visual Studio 构建的。

16.1. Building with Visual C++ or the Platform SDK #

PostgreSQL 可以用 Microsoft 的 Visual C++ 编译器套件构建。这些 编译器可以来自 Visual StudioVisual Studio Express 或某些版本的 Platform SDK。如果你还没有搭好 Visual Studio 环境,最简单的方式是使用 Platform SDK 中的编译器,它可以从 Microsoft 免费下载。

PostgreSQL 支持 Visual Studio 2005Visual Studio 2008 的编译器。如果只使用 Platform SDK,或者为 64 位 Windows 构建,则只支持 Visual Studio 2008。尚不支持 Visual Studio 2010

使用 Platform SDK 构建时,支持 SDK 的 6.0 到 7.0 版。更旧或更新的版本都无法工作。特别地,7.0a 及之后 的版本无法工作,因为它们包含 Visual Studio 2010 的编译器。

使用 Visual C++ 构建所需的工具位于 src/tools/msvc 目录。构建时,请确保系统 PATH 中没有 MinGWCygwin 的工具。另外,请确保 PATH 中有 所有必需的 Visual C++ 工具。在 Visual Studio 中,启动 Visual Studio Command Prompt。在 Platform SDK 中,启动开始菜单中 SDK 下列出的 CMD shell。如果希望构建 64 位 版本,必须使用该命令的 64 位版本,反之亦然。所有命令都应当在 src\tools\msvc 目录中运行。

构建之前,你可能需要编辑文件 config.pl,以反映你要更改的配置选项,或要 使用的第三方库的路径。完整配置的确定方式是:先读取并解析文件 config_default.pl,然后应用 config.pl 中的更改。例如,要指定 Python 安装的位置,把以下内容放进 config.pl

$config->{python} = 'c:\python26';

只需指定与 config_default.pl 中不同的参数。

如果需要设置其他环境变量,可创建一个名为 buildenv.pl 的文件,并把所需的命令放在其中。 例如,要在 bison 不在 PATH 中时添加它的路径,可创建包含以下内容 的文件:

$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';

16.1.1. 要求

构建 PostgreSQL 需要以下附加产品。可用 config.pl 文件指定各个库所在的目录。

Microsoft Platform SDK

建议升级到最新可用版本的 Microsoft Platform SDK,它可以从 http://www.microsoft.com/downloads/ 下载。

必须始终包含 SDK 的 Windows Headers and Libraries 部分。 如果安装的 Platform SDK 包含 Visual C++ Compilers,则构建不需要 Visual Studio

ActiveState Perl

运行构建生成脚本需要 ActiveState Perl。MinGW 或 Cygwin 的 Perl 无法工作。它也必须位于 PATH 中。二进制文件可以从 http://www.activestate.com 下载(注意:需要 5.8 或更高版本,免费的 Standard Distribution 就足够了)。

以下附加产品不是起步所必需的,但构建完整的软件包时需要。可用 config.pl 文件指定各个库所在的目录。

ActiveState TCL

Required for building PL/TCL (Note: version 8.4 is required, the free Standard Distribution is sufficient).

Bison and Flex

从 Git 构建时需要 Bison 和 Flex,从发布文件构建则不需要。 注意,只有 Bison 1.875 或 2.2 及之后的版本可用。另外,需要 Flex 2.5.31 或更高版本。Bison 可以从 http://gnuwin32.sourceforge.net 下载。Flex 可以 从 http://www.postgresql.org/ftp/misc/winflex/ 下载。

注意

GnuWin32 的 Bison 发行版似乎有一个缺陷:当它安装在名称中 带空格的目录(如英文安装的默认位置 C:\Program Files\GnuWin32)中时会 失常。可考虑改为安装到 C:\GnuWin32

Diff

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

Gettext

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

MIT Kerberos

Kerberos 认证支持需要。MIT Kerberos 可以从 http://web.mit.edu/Kerberos/dist/index.html 下载。

libxml2 and libxslt

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

openssl

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

ossp-uuid

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

Python

构建 PL/Python 需要。二进制文件可以 从 http://www.python.org 下载。

zlib

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

16.1.2. 64 位 Windows 的特殊注意事项

在 64 位 Windows 上,PostgreSQL 只能为 x64 架构构建,不支持 Itanium 处理器。

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

要使用服务器端的第三方库(如 pythonopenssl),该库也必须是 64 位 的。不支持在 64 位服务器中装载 32 位库。PostgreSQL 支持的若干 第三方库可能只有 32 位版本,这种情况下它们不能与 64 位 PostgreSQL 一起使用。

16.1.3. 构建

要以发布配置(默认)构建整个 PostgreSQL,运行以下命令:

build

要以调试配置构建整个 PostgreSQL,运行以下命令:

build DEBUG

要只构建单个项目(例如 psql),运行以下命令:

build psql
build DEBUG psql

要把默认构建配置改为调试,把以下内容放进 buildenv.pl 文件:

$ENV{CONFIG}="Debug";

也可以在 Visual Studio GUI 内部构建。这种情况下,需要从命令 提示符运行:

perl mkvcbuild.pl

然后在 Visual Studio 中打开生成的 pgsql.sln(位于源码树根目录)。

16.1.4. 清理和安装

大多数时候,Visual Studio 的自动依赖跟踪会处理好更改的文件。但 如果发生了大的更改,可能需要清理安装。为此,只需运行 clean.bat 命令,它会自动清除所有生成的文件。 也可以带 dist 参数运行它,此时它的行为类似于 make distclean,还会删除 flex/bison 的 输出文件。

默认情况下,所有文件都写入 debugrelease 目录的 子目录中。要按标准布局安装这些文件,并生成初始化和使用数据库 所需的文件,运行以下命令:

install c:\destination\directory

16.1.5. 运行回归测试

要运行回归测试,先确保已完成所有必需部分的构建。另外,确保装载 系统所有部分所需的 DLL(如过程语言所需的 Perl 和 Python DLL) 位于系统路径中。如果不是,可通过 buildenv.pl 文件设置。要运行测试,从 src\tools\msvc 目录运行以下命令之一:

vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck

要更改所用的调度表(默认为 parallel),把它附加到命令行, 例如:

vcregress check serial

关于回归测试的更多信息,参见 第 30 章

16.1.6. 构建文档

以 HTML 格式构建 PostgreSQL 文档需要若干工具和文件。为所有这些 文件创建一个根目录,并把它们存放在下面列表中的各子目录里。

OpenJade 1.3.1-2

http://sourceforge.net/projects/openjade/files/openjade/1.3.1/openjade-1_3_1-2-bin.zip/download 下载并解压到子目录 openjade-1.3.1

DocBook DTD 4.2

http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip 下载并解压到子目录 docbook

DocBook DSSSL 1.79

http://sourceforge.net/projects/docbook/files/docbook-dsssl/1.79/docbook-dsssl-1.79.zip/download 下载并解压到子目录 docbook-dsssl-1.79

ISO 字符实体

http://www.oasis-open.org/cover/ISOEnts.zip 下载 并解压到子目录 docbook

编辑 buildenv.pl 文件,为根目录的位置添加 一个变量,例如:

$ENV{DOCROOT}='c:\docbook';

要构建文档,运行命令 builddoc.bat。注意,为了生成索引,它实际上 会运行两次构建。生成的 HTML 文件位于 doc\src\sgml

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。