第 16 章 在 Windows 上从源代码安装
目录
建议大多数用户下载适用于 Windows 的二进制发行版,该发行版以 Windows Installer 安装程序包的形式提供,可从 PostgreSQL 网站获取。从源码构建仅面向开发 PostgreSQL 或扩展的人员。
在 Windows 上构建 PostgreSQL 有几种不同的方法。完整的系统可以使用 MinGW 或 Visual C++ 2005 构建。也可以使用 Cygwin 为较旧版本的 Windows 构建。最后,客户端访问库(libpq)可以用 Visual C++ 7.1 或 Borland C++ 构建,以便与用这些工具构建的静态链接应用兼容。
使用 MinGW 或 Cygwin 构建时采用常规构建系统,参见第 15 章以及第 15.8.5 节和第 15.8.2 节中的具体说明。不推荐使用 Cygwin,它只应用于原生构建无法工作的较旧版本 Windows,例如 Windows 98。
16.1. 用 Visual C++ 2005 构建 #
使用 Visual C++ 2005 构建所需的工具位于
src/tools/msvc 目录。构建时,请确保系统
PATH 中没有 MinGW 或
Cygwin 的工具。另外,请确保 PATH 中有所有必需的 Visual C++ 工具,通常的做法是启动
Visual Studio Command Prompt 并在其中运行各种命令。所有命令都应当在
src\tools\msvc 目录中运行。
构建之前,编辑文件 config.pl,以反映你想要设置的配置选项,包括所用库的路径。如果需要设置其他环境变量,可创建一个名为 buildenv.pl 的文件,并把所需的命令放在其中。例如,要在 bison 不在 PATH 中时添加它的路径,可创建包含以下内容的文件:
$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';
16.1.1. 需求
PostgreSQL 可以使用
Visual Studio 2005 的专业版(任意版本)或免费的
Express 版构建。构建完整的软件包还需要下列附加产品。可用
config.pl 文件指定各个库所在的目录。
- ActiveState Perl
运行构建生成脚本需要 ActiveState Perl。MinGW 或 Cygwin 的 Perl 无法工作。它也必须位于 PATH 中。二进制文件可以从http://www.activestate.com下载(注意:需要 5.8 或更高版本,免费的 Standard Distribution 就足够了)。
- ActiveState TCL
构建 PL/TCL 需要(注意:需要 8.4 版本,免费的 Standard Distribution 就足够了)。
- Bison 和 Flex
从 Git 构建时需要 Bison 和 Flex,从发布文件构建则不需要。注意,只有 Bison 1.875 或 2.2 及之后的版本可用。Bison 和 Flex 可以从http://gnuwin32.sourceforge.net下载。
- Diff
运行回归测试需要 Diff,可以从http://gnuwin32.sourceforge.net下载。
- Gettext
以 NLS 支持构建需要 Gettext,可以从http://gnuwin32.sourceforge.net下载。注意,二进制文件、依赖和开发者文件全都需要。
- Microsoft Platform SDK
建议升级到最新可用版本的 Microsoft Platform SDK,它可以从http://www.microsoft.com/downloads/下载。
- MIT Kerberos
Kerberos 认证支持需要。MIT Kerberos 可以从http://web.mit.edu/Kerberos/dist/index.html下载。
- libxml2 和 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_dump 和 pg_restore 的压缩支持需要。二进制文件可以从http://www.zlib.net下载。
16.1.2. 构建
要以发布配置(默认)构建整个 PostgreSQL,运行以下命令:
build要以调试配置构建整个 PostgreSQL,运行以下命令:
build DEBUG要只构建单个项目(例如 psql),运行以下命令:
build psqlbuild DEBUG psql
要把默认构建配置改为调试,把以下内容放进
buildenv.pl 文件:
$ENV{CONFIG}="Debug";
也可以在 Visual Studio GUI 内部构建。这种情况下,需要从命令提示符运行:
perl mkvcbuild.pl
然后在 Visual Studio 中打开生成的
pgsql.sln(位于源码树根目录)。
16.1.3. 清理和安装
大多数时候,Visual Studio 的自动依赖跟踪会处理好更改的文件。但如果发生了大的更改,可能需要清理安装。为此,只需运行
clean.bat 命令,它会自动清除所有生成的文件。也可以带
dist 参数运行它,此时它的行为类似于
make distclean,还会删除 flex/bison 的输出文件。
默认情况下,所有文件都写入
debug 或 release 目录的子目录中。要按标准布局安装这些文件,并生成初始化和使用数据库所需的文件,运行以下命令:
perl install.pl c:\destination\directory
16.1.4. 运行回归测试
要运行回归测试,先确保已完成所有必需部分的构建。另外,确保装载系统所有部分所需的 DLL(如过程语言所需的 Perl 和 Python DLL)位于系统路径中。如果不是,可通过
buildenv.pl 文件设置。要运行测试,从
src\tools\msvc 目录运行以下命令之一:
vcregress checkvcregress installcheckvcregress plcheckvcregress contribcheck
要更改所用的调度表(默认为 parallel),把它附加到命令行,例如:
vcregress check serial关于回归测试的更多信息,参见第 29 章。
16.1.5. 构建文档
以 HTML 格式构建 PostgreSQL 文档需要若干工具和文件。为所有这些文件创建一个根目录,并把它们存放在下面列表中的各子目录里。
- OpenJade 1.3.1-2
从http://sourceforge.net/project/downloading.php?groupname=openjade&filename=openjade-1_3_1-2-bin.zip下载并解压到子目录
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/project/downloading.php?groupname=docbook&filename=docbook-dsssl-1.79.zip下载并解压到子目录
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。