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

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.1 已于 2016 年 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.7.5 节第 15.7.2 节中的专门说明。要在这些环境中生成原生 64 位二进制文件,请使用MinGW-w64工具。这些工具也可用于在其他主机(例如LinuxDarwin)上为 32 位和 64 位Windows目标进行交叉编译。不建议使用Cygwin运行生产服务器,它只应用于原生构建无法工作的较旧版本Windows,例如Windows 98。官方二进制文件是使用Visual Studio构建的。

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

16.1. 使用 Visual C++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的工具。同时,也要确保所需的 Visual C++ 工具都已在 PATH 中可用。在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 中,可以创建一个包含以下内容的文件,以将其路径加入 PATH:

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

16.1.1. 需求

构建PostgreSQL需要以下附加产品。请使用config.pl文件指定这些库所在的目录。

Microsoft Platform SDK

建议升级到Microsoft Platform SDK最新受支持的版本(目前为版本 7.0),可从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 或更高版本,免费的标准发行版即可)。

以下附加产品并非入门所必需,但若要构建完整的软件包则需要它们。请使用config.pl文件指定这些库所在的目录。

ActiveState TCL

构建 PL/TCL 需要它(注意:需要 8.4 版本,免费的标准发行版即可)。

BisonFlex

从 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 发行版似乎存在一个 bug:如果安装在名称中含有空格的目录中,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。MIT Kerberos 可从http://web.mit.edu/Kerberos/dist/index.html下载。

libxml2libxslt

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 的特殊注意事项

PostgreSQL 在 64 位 Windows 上只会为 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 图形界面中进行构建。在这种情况下,你需要先从命令提示符运行:

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. 构建文档

将 PostgreSQL 文档构建为 HTML 格式,需要若干工具和文件。请为这些文件创建一个根目录,并将它们存放在下列子目录中。

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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。