PostgreSQL服务器管理:在Windows上从源代码安装

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权。

1. 使用Visual C++或Microsoft Windows SDK构建

PostgreSQL可以使用来自微软的Visual C++编译器套件构建。这些编译器可以来自于Visual Studio、Visual Studio Express或者Microsoft Windows SDK的某些版本。如果你还没有准备好一个Visual Studio环境设置,最简单的方式是使用Visual Studio Express 2013 for Windows Desktop中的编译器,或者Windows SDK 7.1中的,两者都可以从微软免费下载。

使用微软编译器套件可以编译得到 32 位和 64 位版本。32 位的 PostgreSQL 可以使用 Visual Studio 2005至 Visual Studio 2015(包括精简版)编译, 单独的Windows SDK 6.0至7.1亦可。64位PostgreSQL的构建只被 Microsoft Windows SDK版本6.0a至7.1或 Visual Studio 2008及以上版本支持。 使用Visual Studio 2005至 Visual Studio 2013编译时最低支持 Windows XP和 Windows Server 2003。使用 Visual Studio 2015编译时最低支持 Windows Vista和Windows Server 2008。

使用Visual C++或Platform SDK构建的工具在src/tools/msvc目录中。在构建时,请确定在系统路径中没有来自于MinGW或的Cygwin工具。同样,确保所有需要的Visual C++工具都在PATH中。在Visual Studio中,启动Visual Studio Command Prompt。如果你希望构建一个64位版本,你必须使用64位版本的命令,反之亦然。在Microsoft Windows SDK中,启动该SDK在启动菜单中的CMD shell。在最近的SDK版本中你可以使用setenv命令改变目标CPU架构、构建类型以及目标OS,例如setenv /x86 /release /xp会设置为Windows XP或更高版本上的32位发布构建。使用/?来了解setenv的其他选项。所有命令应该从src\tools\msvc目录运行。

在开始构建之前,你还需要编辑文件config.pl来反映任何你想改变的配置选项,或者要使用的任何第三方库目录。完整的配置在第一次读取并解析文件config_default.pl时确定,然后应用config.pl中的任何改变。例如,要制定你的Python安装的位置,将下面的内容放在config.pl中:

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

你只需要指定那些和config_default.pl中不同的参数即可。

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


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

1.1. 要求

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

Microsoft Windows SDK

如果你的构建环境中没有一个受支持的Microsoft Windows SDK版本,推荐你升级到最新版(当前版本为7.1,可从http://www.microsoft.com/downloads/ 下载)。

你必须总是包括SDK中的Windows头文件和库部分。如果你安装的是一个包括Visual C++ 编译器的Windows SDK,构建时不需要Visual Studio。注意在版本8.0a,Windows SDK中不再包括一个完整的命令行构建环境。

ActiveState Perl

ActiveState Perl被用来运行构建生成脚本。MinGW或Cygwin Perl是不符合要求的。AcitveState Perl也必须存在于PATH中。其二进制文件可以从http://www.activestate.com 下载(注意:需要版本5.8及以上,免费标准发布就足够了)。

下面的附加产品在开始时并不要求,但是如果要构建完整的包就需要它们。使用config.pl文件来指定这些库所在的目录。

ActiveState TCL

用于构建PL/TCL(注意:要求版本8.4,免费标准发布即可)。

Bison和 Flex

Bison和Flex用来从Git构建,但使用发行文件构建时可以不要求。只有Bison 1.875或2.2及以上才能正常工作。Flex则必须是版本2.5.31或以上。

Bison和Flex 都包括在msys工具套件中,它作为 MinGW编译器套件的一部分可以从 http://www.mingw.org/wiki/MSYS 得到。

你将需要把包含flex.exe和bison.exe 的目录加入到buildenv.pl中的PATH环境变量中, 除非它们已经存在于PATH中。在MinGW的情况下, 目录将是MinGW安装目录的\msys\1.0\bin子目录。

Note: 来自GnuWin32的Bison发布似乎有一个故障,它会导致Bison安装于名称中有空格的目录时发生故障,例如英语安装的默认位置C:\Program Files\GnuWin32。考虑将它安装到C:\GnuWin32或者在PATH环境设置中使用NTFS段路径名(例如C:\PROGRA~1\GnuWin32)。

Note:
在PostgreSQL的FTP站点上的以及被旧文档引用的老式winflex二进制程序在64位Windows主机上会出现"flex: fatal internal error, exec failed"的错误。请使用来自 MSYS 的 Flex。

Diff

Diff是回归测试所需要的,可以从http://gnuwin32.sourceforge.net 得到。

Gettext

Gettext用于NLS支持,可以从http://gnuwin32.sourceforge.net 得到。注意二进制程序、依赖文件以及开发者文件都需要。

MIT Kerberos

用于 GSSAPI 认证支持。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 only)。源代码可以从http://www.ossp.org/pkg/lib/uuid/ 下载。

Python

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

zlib

用于pg_dump和pg_restore中的压缩支持。二进制文件可以从http://www.zlib.net 下载。

1.2. 针对64位Windows的特殊考虑

在64位Windows上,PostgreSQL只能为x64架构构建,因此无法支持安腾处理器。

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

要使用服务器端的第三方库如python或openssl,该库必须也是64位。在一个64位服务器上载入一个32位库是不被支持的。PostgreSQL支持的一些第三方库可能只有32位版本,在这种情况下它们就不能被用于64位PostgreSQL。

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(在源代码树的根目录中)。

1.4. 清理和安装

在大部分时间里,Visual Studio的自动依赖跟踪会处理发生改变的文件。但是如果发生了大量的改变,你也许需要清理整个安装。为此,只要运行clean.bat命令,它将会自动清除所有生成的文件。你也可以使用dist参数运行它,这种情况下它的效果和make distclean一样,并且会移除flex/bison的输出文件。

默认情况下,所有的文件都被写入到名为debug或release的子目录中。要将这些文件以标准布局进行安装并且生成初始化和使用数据库所需的文件 ,运行命令:


install c:\destination\directory

如果你想只安装客户端应用和接口库,那么你可以使用这些命令:


install c:\destination\directory client

1.5. 运行回归测试

要运行回归测试,确保你已经完成了所有所需部分的构建。另外,确保载入整个系统所需的DLL(例如Perl和Python过程语言所需的DLL)都在系统路径中。如果它们不在路径中,通过buildenv.pl文件设置。要运行测试,可以从src\tools\msvc目录运行以下命令之一:


vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck
vcregress modulescheck
vcregress ecpgcheck
vcregress isolationcheck
vcregress bincheck
vcregress recoverycheck
vcregress upgradecheck

要更改使用的调度方式(默认为并行),在命令行后增加调度方式,如:


vcregress check serial

用vcregress bincheck和vcregress recoverycheck 分别可以运行客户端程序上的回归测试和恢复测试,这要求 安装了额外的 Perl 模块:


IPC::Run

从编写这份文档时起,IPC::Run没有被包括在 ActiveState Perl 安装或者 ActiveState Perl Package Manager (PPM) 库中。要安装,请从 CPAN (在 http://search.cpan.org/dist/IPC-Run/)下载 IPC-Run-.tar.gz源代码归档并且解压。 编辑buildenv.pl文件,并且增加一个 PERL5LIB 变量 指向解压得到的归档中的lib子目录。例如:


$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';

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中。

2. 使用Visual C++或 Borland C++构建libpq

如果你需要一个具有不同调试/发行标记的版本,或者你需要一个静态库来链接到一个应用,使用Visual C++ 7.1-9.0或Borland C++构建libpq是唯一被推荐的方式。对于正常的使用,推荐用MinGW或Visual Studio或Windows SDK。

要使用Visual Studio 7.1或以上构建libpq客户端库,转入到src目录并输入命令:


nmake /f win32.mak

要使用Visual Studio 8.0或以上构建64位版本的libpq,转入到src目录并输入命令:


nmake /f win32.mak CPU=AMD64

要使用Borland C++构建libpq客户端库,转入到src目录并输入命令:


make -N -DCFG=Release /f bcc32.mak

2.1. 生成的文件

下列文件将被构建:

interfaces\libpq\Release\libpq.dll

可动态链接的前端库

interfaces\libpq\Release\libpqdll.lib

用于链接程序到libpq.dll的导入库

interfaces\libpq\Release\libpq.lib

前端库的静态版本

通常你不需要安装任何一个客户端文件。你应该将libpq.dll文件放在你的可执行应用文件的同一目录下。如非必要,不要将libpq.dll安装到你的Windows、System或System32目录中。如果该文件通过一个安装程序安装,则在安装时会使用文件中包含的VERSIONINFO资源进行版本检查, 以保证更新版本的库不会被覆盖。

如果你打算在这台机器上使用libpq进行开发,你还需要把源代码树中的src\include和src\interfaces\libpq子目录加入到编译器设置的include路径中。

要使用该库,你必须把libpqdll.lib文件加入到你的项目(在Visual C++中,只需要在项目上单击右键并选择加入它)。

时间: 2024-11-30 21:07:37

PostgreSQL服务器管理:在Windows上从源代码安装的相关文章

PostgreSQL服务器管理:从源代码安装

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 简单版 ./configure make su make install adduser postgres mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/p

PostgreSQL服务器管理:服务器配置

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 设置参数 1.1. 参数名称和值 所有参数名都是大小写不敏感的.每个参数都可以接受五种类型之一的值: 布尔.字符串.整数. 浮点数或枚举.该类型决定了设置该参数的语法: 布尔: 值可以被写成 on, off, true, false, yes, no, 1, 0 (都是大小写不敏感的)或者这些值的任何无歧义前缀. 字符串: 通常值被包括在单引号内,值内部的任何单引号都需要被双写.不过,如果值是一个简单数字或者 标

PostgreSQL服务器管理:服务器设置和操作

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. PostgreSQL用户账户 和对外部世界可访问的任何服务器守护进程一样,我们也建议在一个独立的用户账户下运行PostgreSQL.这个用户账户应该只拥有被该服务器管理的数据,并且应该不能被其他守护进程共享(例如,使用用户nobody是一个坏主意).我们不建议把可执行文件安装为属于这个用户,因为妥协系统可能接着修改它们自己的二进制文件. 要在你的系统中增加一个 Unix 用户账户,查看一个命令useradd或ad

PostgreSQL服务器管理:本地化

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 区域支持 区域支持指的是应用遵守文化偏好的问题,包括字母表.排序.数字格式等.PostgreSQL使用服务器操作系统提供的标准 ISO C 和POSIX的区域机制.更多的信息请参考你的系统的文档. 1.1. 概述 区域支持是在使用initdb创建一个数据库集簇时自动被初始化的.默认情况下,initdb将会按照它的执行环境的区域设置初始化数据库集簇: 因此如果你的系统已经设置为你的数据库集簇想要使用的区域, 那么你

PostgreSQL服务器管理:管理数据库

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 概述 一个数据库是一些SQL对象("数据库对象")的命名集合.通常每个数据库对象(表.函数等) 属于并且只属于一个数据库(不过有几个系统表如pg_database属于整个集簇并且对集簇中的每个数据库都是可访问的).更准确地说,一个数据库是一个模式的集合, 而模式包含表.函数等等.因此完整的层次是这样的:服务器.数据库.模式.表(或者某些其他对象类型,如函数). 当连接到数据库服务器时,客户端必须在它的连

PostgreSQL服务器管理:恢复配置

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 归档恢复设置 restore_command (string) 用于获取 WAL 文件系列的一个已归档段的本地 shell 命令.这个参数是归档恢复所必需的,但是对于流复制是可选的.在该字符串中的任何%f会被替换为从归档中获得的文件的名字,并且任何%p会被在服务器上的复制目标路径名替换(该路径名是相对于当前工作目录的,即集簇的数据目录).任何%r会被包含上一个可用重启点的文件的名字所替换.在那些必须被保留用于使得

BT宝塔Linux服务器管理助手架设免费VPS面板安装及初始设置教程

老左初次看到宝塔服务器管理助手软件的信息应该是上周在小夜博客那边看到广告的,从这款软件介绍应该是在这两年逐步在更新.升级,目前拥有Linux和Windows环境版本,其中我们大部分用户需要的Linux系统版本处于内侧版本,但是功能对于普通的建站需求应该是比较齐全的.   从用户需求角度看,目前国内的Linux服务器管理面板虽然大大小小有很多个,但是要么是开始付费,要么版本过老很久不更新,包括老左在之前有介绍的AppNode面板也是收费版本,但是BT宝塔面板是免费的,虽然目前处于测试版本,我还是准

PostgreSQL服务器管理:数据库角色

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 数据库角色 数据库角色在概念上已经完全与操作系统用户独立开来.事实上可能维护一个对应关系会比较方便,但是这并非必需.数据库角色在一个数据库集簇安装范围内是全局的(而不是独立数据库内).要创建一个角色,可使用CREATE ROLE SQL 命令: CREATE ROLE name; name遵循 SQL 标识符的规则:或是未经装饰没有特殊字符,或是用双引号包围(实际上,你将总是给该命令要加上额外选项,例如LOGIN

PostgreSQL服务器管理:日常数据库维护工作

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 日常清理 PostgreSQL数据库要求周期性的清理维护.对于很多安装,让自动清理守护进程来执行清理已经足够,如Section 24.1.6所述.你可能需要调整其中描述的自动清理参数来获得最佳结果.某些数据库管理员会希望使用手动管理的VACUUM命令来对后台进程的活动进行补充或者替换,这通常使用cron或任务计划程序脚本来执行.要正确地设置手动管理的清理,最重要的是理解接下来几小节中讨论的问题.依赖自动清理的管理