PostgreSQL数据库学习手册之安装指导

发表于:2007-06-22来源:作者:点击数: 标签:
Chapter 1. 安装指导 Table of Contents 1.1. 简版 1.2. 要求 1.3. 获取源码 1.4. 如果你是在升级 1.5. 安装过程 1.6. 安装后设置 1.6.1. 共享库 1.6.2. 环境变量 1.7. 支持的平台 这里 chapter 的信息描述从源代码发布安装 PostgreSQL。 1.1. 简版 ./config

   
  Chapter 1. 安装指导

Table of Contents
1.1. 简版
1.2. 要求
1.3. 获取源码
1.4. 如果你是在升级
1.5. 安装过程
1.6. 安装后设置

1.6.1. 共享库
1.6.2. 环境变量

1.7. 支持的平台

这里 chapter 的信息描述从源代码发布安装 PostgreSQL。
1.1. 简版

./configure
gmake
su
gmake 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/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

全版是本章余下部分. chapter.

1.2. 要求

一般说来,一个现代的与 Unix 兼容的平台应该就能运行 PostgreSQL. 到发布为止已经明确测试过的平台的列表在 Section 1.7列出. 在发布的 doc 子目录里面有许多平台相关的 FAQ,如果你碰到问题你可能会需要参考它们.

制作 PostgreSQL 需要下面几样东西:

*

制作PostgreSQL 需要 GNU make; 这个制作过程不能使用其他的make 程序.GNU make常被安装为 gmake的名字.本文档将一直使用这个名字称呼她. (在一些系统上GNUmake 是 名字叫 make的缺省工具.)要想测试 GNU make,敲入

gmake --version

我们建议使用版本 3.76.1 或者更新的版本.
*

你需要一个 ISO/ANSI C 编译器.我们推荐使用最近版本的 GCC,不过,众所周知的是 PostgreSQL 可以利用许多不同厂商的不同编译器进行编译.
*

我们需要先用 gzip 将版本解压缩. 如果你读到这里了,那么你很可能已经克服这个障碍了.
*

缺省时将自动使用 GNU Readline, (这样你可以方便地编辑和检索命令历史.) 如果你不想用它,那么你必需给 configure 声明 --without-readline 选项. (在 NetBSD 上,libedit 库是 readline 兼容的, 如果没有发现 libreadline,则使用这个库.)
*

如果从发布的源代码包中制作,那就不需要 GNU Flex 和 Bison 了,因为输出文件 已经预先生成好了.只有在你从 CVS 源码树上制作,或者是你修改了实际的 扫描器和分析器的定义文件才需要这些 程序.如果你需要这些东西,确保你拿到的是 Flex 2.5.4 或更新,以及 Bison 1.28 或更新,其它的yacc 有时候也可以用, 不过这么做需要额外的工作,因而我们不推荐.其它 lex 程序肯定是不行的.
*

要在 Windows NT 或者 Windows 2000 上制作,你需要 Cygwin 和cygipc 包. 参阅文件 doc/FAQ_MSWIN 获取细节.

下列包是可选的。在缺省配置的时候并不要求它们,但是如果打开了 一些制作选项之后就需要它们了,如下面解释的。

*

要制作服务器端编程语言 PL/Perl,你需要一个完整的Perl安装, 包括 libperl 库和头文件。 因为 PL/Perl 是一个共享库, libperl 库在大多数平台上也必须是一个共享库。 最近的版本的 Perl 好像这么做已经是缺省了,但是早先的版本可不是这样的, 而且通常这是给你安装 Perl 的人的选择。

如果你没有共享库,而你却需要它,那么在制作过程中看到下面的信息, 指出这个问题:

*** Cannot build PL/Perl because libperl is not a shared library.
*** You might have to rebuild your Perl installation. Refer to
*** the documentation for details.

(如果你不按照屏幕输出的指示去做,那么你只会注意到 PL/Perl 库 对象,plperl.so 或者类似的什么东西,不会被安装。) 如果你看到这些东西,那么你就必须重新手工制作并安装 Perl,这样才能制作 PL/Perl。 在配置 Perl 的过程中,要求一个共享库。
*

要制作 Python 接口模块或者 PL/Python 服务器端编程语言, 你需要一个 Python 的安装,包括头文件。 因为 PL/Python 将是是一个共享库, libpython 库在大多数平台上必须也是一个共享库。 在缺省的 Python 安装中很可能不是这样的。

如果在制作和安装之后, 你有一个叫做 plpython.so 的文件(可能扩展名会有所不同), 那么一切都好说,否则你应该回看到类似下面的信息飘过:

*** Cannot build PL/Python because libpython is not a shared library.
*** You might have to rebuild your Python installation. Refer to
*** the documentation for details.

这意味着你必须重新制作(一部分)你的 Python,以提供这个共享库。

问题是 Python 发布或者 Python 的维护人员并没有提供实现这些 东西的直接方法。我们可以提供给你的最接近的信息是在 Python FAQ 3.30 里。 在一些操作系统里你实际上并不用真正制作一个共享库,但是你可能 需要骗取PostgreSQL的制作系统的信任。参考在 src/pl/plpython 目录里的 Makefile 获取细节。
*

如果你想制作 Tcl 或者 Tk 部件(客户端和 PL/Tcl 语言), 你当然需要安装 Tcl 了。
*

要制作 JDBC 驱动,你需要 Ant 1.5 或者更高版本, 以及一个 JDK。Ant 是一个 制作基于 JAVA 的包的特殊工具。可以从 Ant 网站 下载。

如果你安装了好几个 Java 编译器,那么选择哪个则依赖于 Ant 的配置。 预编译的 Ant 发布通常设置了读取当前用户 家目录中的文件 .antrc 来获得配置。比如,要使用 一个和缺省不同的 JDK,下面这样的命令可能会有用:

JAVA_HOME=/usr/local/sun-jdk1.3
JAVACMD=$JAVA_HOME/bin/java

注意: 不要试图通过直接调用 ant 或者甚至是 javac 来制作驱动。这样没用的。按照下面描述的那样正常地运行 gmake。

*

要打开本地语言支持 (NLS),也就是说, 用英语之外的语言显示程序的信息,你需要一个 Gettext API 的实现。有些操作系统内置了这些(比如 Linux, NetBSD, Solaris), 对于其它系统,你可以从这里:http://www.postgresql.org/~petere/gettext.html 下载一个额外的包。如果你在使用 GNU C 库里面的 gettext 实现, 那么你就额外需要 GNU Gettext 包,因为我们需要里面的 几个工具程序。对于任何其它的实现,你应该不需要它。
*

Kerberos,OpenSSL,或者 PAM, 如果你想支持使用这些服务的认证,那你需要这些包。

如果你从CVS树中制作,而不是使用发布的源代码包,或者你想做一些开发, 那么你还需要下面的包:

*

如果你需要从 CVS 抄出中制作,或者你修改了扫描器和分析器的定义文件, 那么你需要 Flex 和 Bison。 如果你需要它们,那么确保自己拿到的是 Flex 2.5.4 或更新的版本, 以及 Bison 1.50 或者更新的版本。有时候也可以使用其它 yacc 程序,但是这样做要求额外的工作,因此我们不建议使用。 其它的 lex 程序肯定是不行的。

如果你需要获取 GNU make,你可以在你的本地 GNU 镜像站点 (看看 http://www.gnu.org/order/ftp.html 或 ftp://ftp.gnu.org/gnu/make. 找到她们.

请检查一下,看看你是否有足够的磁盘空间.你将大概需要近 65MB 用于 存放安装过程中的源码树和大约 15 MB 用于安装目录.一个空数据库大概 需要 25 MB.然后在使用过程中大概需要在一个平面文本文件里存放同等 数据量数据五倍的空间存储数据.如果你要运行回归测试,还临时 需要额外的 90MB.请用df命令检查磁盘空间.

1.3. 获取源码

PostgreSQL 7.3 源代码可以从匿名 FTP 站点 ftp://ftp.postgresql.org/pub/postgresql-7.3.tar.gz获得. 可能地话你可以使用一个镜象站点.然后解压缩:

gunzip postgresql-7.3.tar.gz
tar xf postgresql-7.3.tar

这样将在当前目录创建一个目录 postgresql-7.3, 里面是PostgreSQL源代码. 进入这个目录完成安装过程的其他步骤.

1.4. 如果你是在升级

新版本的PostgreSQL的内部数据存储格式可能会 发生改变.因此, 如果你正在升级一个版本号不象"7.3.x"这样的系统, 你就必须按照这里说的方法备份和恢复你的数据. 这些指导假设你现有的安装在 /usr/local/pgsql 目录里面, 并且数据区在 /usr/local/pgsql/data. 根据你的情况修改这些路径.

1.

确保你在备过程中和备份后没有更新. 虽然即使有数据更新也不会影响备份的完整性,但是很明显 更新的数据会被排除在备份之外,而它是应该包括进来的.如果有必要, 可以编辑文件/usr/local/pgsql/data/pg_hba.conf 或等效的文件中的权限以禁止除你之外的所有人的访问.
2.

要备份出你的数据库安装,敲入:

pg_dumpall > outputfile

如果你需要保留 OID(比如说当你用到它们做外键时),那么在 运行pg_dumpall时带-o选项.

pg_dumpall 并不保存大对象. 如果你要保存大对象,请检查 Section 9.1.4

要做一个备份,你可以使用你当前正在运行的版本的 pg_dumpall 命令。不过,要获取最好的结果,最好使用来自 PostgreSQL 7.3 的 pg_dumpall,因为这个版本包含对老版本的错误修补以及改进。 虽然这个建议看起来好像很愚蠢,因为你还没有安装新版本,但如果你准备安装新版本, 我们还是建议你遵循这个建议。这个时候你可以按照平常那样完成安装, 然后再转换数据。这样将降低停业时间。
3.

如果你准备把新版本的数据库装在与旧数据库相同的位置,那么 关闭旧的数据库服务器,(至少在安装新文件之前如此):

kill -INT `cat /usr/local/pgsql/data/postmaster.pid`

在 7.0 以前的版本没有这个 postmaster.pid 文件.如果你用的是这样的版本 那你就得自己把数据库服务器的进程号找出来,比如通过这样的 命令 ps ax | grep postmaster,然后 把进程号交给 kill命令.

在那些在引导的时候就启动 PostgreSQL 的系统上,可能已经有一个启动文件可以干这件事. 例如,在一台Red Hat Linux 系统上我们可以找到

/etc/rc.d/init.d/postgresql stop

是可以用的.另外一个可能是 pg_ctl stop.
4.

如果你准备装在老版本的地盘,那么把它们挪走也是一条好计策, 以便你碰到麻烦后还能退回去.用这样的命令:

mv /usr/local/pgsql /usr/local/pgsql.old

当你装完 PostgreSQL 7.3,创建一个新的数据库目录 然后启动新服务器.要记住你必须用特殊的数据库用户登录后才能执行 这些命令(如果你是升级的话这个帐户应该已经存在了).

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

最后,使用新的 psql, 用下面命令恢复你的数据:

/usr/local/pgsql/bin/psql -d template1 -f outputfile



下面这些文章比较详细地讨论了这个问题: Section 9.3,, 不管你是否一定需要这样做,我们都建议你好好读一下.

1.5. 安装过程

1.

配置

安装过程的第一步就是配置源代码树并选择你喜欢的选项. 这个工作是通过运行 configure 脚本实现的,对于缺省安装,你只需要简单地敲入

./configure

该脚本将运行一些测试来猜测一些系统相关的变量并检测你的操作 系统的特殊设置,并且最后将在制做树中创建一些文件以记录它找到了什么. (如果你想保持制作目录的独立,那么你也可以在源代码树外面的目录里运行 configure。)

缺省设置将制作服务器和应用程序,还有所有只需要 C 编译器的客户端程序和 接口. 缺省时所有文件都将安装到 /usr/local/pgsql.

你可以通过给出下面 configure 命令行选项中的一个或更多的选项来客户化 制作和安装过程:

--prefix=PREFIX

把所有文件装在目录 PREFIX下面而不是 /usr/local/pgsql 里.实际的文件会安装到不同的子目录里;甚至没有一个文件会直接 安装到 PREFIX 目录里.

如果你有特殊需要,你还可以用下面的选项客户化不同的子目录 的位置.
--exec-prefix=EXEC-PREFIX

你可以把体系相关的文件安装到一个不同的位置, EXEC-PREFIX,而不是 PREFIX 设置的地方.这样做可以比较方便地在不同主机之间共享体系相关的文件. 如果你省略这些,那么 EXEC-PREFIX 就会被设置为等于 PREFIX 并且体系相关和体系无关的文件都会安装到同一棵目录树下, 这也可能是你想要的.
--bindir=DIRECTORY

为可执行程序声明目录,缺省是 EXEC-PREFIX/bin, 通常也就是 /usr/local/pgsql/bin.
--datadir=DIRECTORY

设置所安装的程序需要的只读文件的目录.缺省是 PREFIX/share. 请注意这个目录和你放数据库文件的地方没有任何关系.
--sysconfdir=DIRECTORY

用于各种各样配置文件的目录,缺省为 PREFIX/etc.
--libdir=DIRECTORY

库文件和动态装载模块的目录.缺省是 EXEC-PREFIX/lib.
--includedir=DIRECTORY

C 和 C++ 头文件的目录.缺省是 PREFIX/include.
--docdir=DIRECTORY

文档文件,(除"man(手册页)"以外, 将被安装到这个目录.缺省是 PREFIX/doc.
--mandir=DIRECTORY

随着 PostgreSQL 一起带的手册页 将安装到这个目录.在它们相应的 manx子目录里. 缺省是 PREFIX/man.

注意: 为了让PostgreSQL能够安装在一些共享的安装位置 (比如 /usr/local/include),同时又不至于和系统 其它部分产生名字空间干扰,我们采取了一些步骤. 首先,安装脚本会自动给 datadir, sysconfdir,和 docdir 后面 附加上 "/postgresql" 字串, 除非展开的完整路径名已经包含字串 "postgres" 或者 "pgsql". 比如,如果你选择 /usr/local 作为前缀, 那么文档将安装在 /usr/local/doc/postgresql, 但如果前缀是 /opt/postgres, 那么它将被放到 /opt/postgres/doc. 客户接口的公共头文件安装到了 includedir,并且 是名字空间无关的.内部的头文件和服务器头文件都安装到 includedir/postgresql 下的私有目录中去了.参考 程序员手册 获取关于如何得到每个接口的头文件的信息.

--with-includes=DIRECTORIES

DIRECTORIES 是一系列冒号分隔的目录,这些目录将被加入编译器的头文件 搜索列表中.如果你有一些可选的包(比如 GNU Readline) 安装在非标准位置,你就必须使用这个选项,以及可能还有相应的 --with-libraries 选项.

例子:--with-includes=/opt/gnu/include:/usr/sup/include.
--with-libraries=DIRECTORIES

DIRECTORIES 是一系列冒号分隔的目录,这些目录是用于查找库文件的. 如果你有一些包安装在非标准位置,你可能就需要使用这个选项 (以及对应的--with-includes选项).

例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib.
--enable-recode

打开单字节字符集记录的支持.参阅 Section 5.3 获取关于这个特性的详细信息.
--enable-nls[=LANGUAGES]

打开本地语言支持(NLS),也就是以非英文显示程序的信息的能力. LANGUAGES 是一个空格分隔的语言代码列表, 标识你想支持的语言.比如 --enable-nls='de fr'. (你提供的列表和实际支持的列表之间的交集 将会自动计算出来.)如果你没有声明一个列表,那么就安装所有可用的 翻译.

要使用这个选项,你需要一个gettextAPI 的实现. 见上文。
--with-pgport=NUMBER

把 NUMBER 设置为服务器和客户端的缺省端口.缺省是 5432. 这个端口可以在以后设置,不过如果你在这里声明,那么 服务器和客户端将有相同的编译好了的缺省值.这样会方便些. 通常选取一个非缺省值的好理由是你企图在同一台机器上 运行多个 PostgreSQL 服务器.
--with-perl

制作 PL/Perl 服务器端编程语言。
--with-python

制作 Python 接口模块和 PL/Python 服务器端编程语言.你需要 root 权限将 Python 模块安装到它的 缺省位置 (/usr/lib/pythonx.y).
--with-tcl

制作那些需要 Tcl/Tk 的部件, 就是libpgtcl, pgtclsh,pgtksh, 和PL/Tcl. 你也可以看看下面的 --without-tk.
--without-tk

如果你同时声明了 --with-tcl 和这个选项,那么那些 需要 Tk(也就是 pgtksh)的程序将被排除在外.
--with-tclconfig=DIRECTORY
--with-tkconfig=DIRECTORY

Tcl/Tk 的安装文件 tclConfig.sh 和 tkConfig.sh, 她们里面包含制作 Tcl 或 Tk 模块接口的配置信息. Configure 通常会自动在她们的众所周知的位置找到这些文件,但是如果你 需要一个不同版本的 Tcl 或 Tk,你也可以声明可以找到她们的目录.
--with-java

制作 JDBC 驱动和相关包。
--with-krb4[=DIRECTORY]
--with-krb5[=DIRECTORY]

制作支持Kerberos认证的东西.你可以选择 Kerberos 版本 4 或 5,但不能同时选两个. DIRECTORY 参数声明 Kerberos 安装的根目录;缺省假设是 /usr/athena 如果相关的头文件和库文件不在常用的父目录,那么你必须 使用附加的 --with-includes 和 --with-libraries 选项.另一方面,如果所需要的文件位于一个缺省的搜索目录, (比如说,/usr/lib), 那你就不用输入这些参数了.

configure 将在安装之前检查所需要的头文件和库文件以确信你的 Kerberos安装是完整的.
--with-krb-srvnam=NAME

Kerberos服务主的名称. 缺省是 postgres.通常没有理由改变这个值.
--with-openssl[=DIRECTORY]

制作支持 SSL (加密的)联接的postgres. 这个选项需要安装 OpenSSL 包. DIRECTORY 参数声明 OpenSSL 安装的根目录;缺省时 /usr/local/ssl.

configure 将在安装之前检查所需要的头文件和库文件以确信你的 OpenSSL 安装是充分的.
--with-pam

制作 PAM(可插拔认证模块)支持.
--without-readline

避免使用Readline库.这样就关闭了 psql 里的命令行编辑和历史, 因此我们不建议这么做.
--without-zlib

避免使用Zlib库.这样就关闭了 pg_dump 里面的压缩支持.这个选项只适用于那些没有这个库的罕见的系统.
--enable-debug

把所有程序和库以带有调试符号的方式编译. 这意味着你可以通过一个调试器运行程序来分析问题. 这样做显著增大了最后安装的可执行文件的大小, 并且在非 GCC 的编译器上,这么做通常还要关闭编译器优化, 导致速度的下降.但是,如果有这些符号表的话,就可以极大 帮助定位可能发生问题的位置.目前,我们只是在你使用 GCC 的 情况下才建议在生产安装中使用这个选项. 但是如果你正在进行开发工作,或者正在使用 beta 版本, 那么你就总应该打开它.
--enable-cassert

打开在服务器中的 assertion 检查, 它会检查许多"不可能发生"的条件.它对于代码开发的用途 而言是无价之宝,不过这些测试稍微地减慢了一些速度. 这些断言检查并不一定都是针对严重错误的,因此一些相对无害的 小虫子也可能导致服务器重启--只要它触发了一次断言失败. 目前,我们不推荐在生产环境中使用这个选项,但是如果你在做开发 或者在使用 beta 版本的时候应该打开它.
--enable-depend

打开自动倚赖性跟踪.如果打开这个选项,那么制作文件(makefile) 将设置为在任何头文件被修改的时候都将重新制作所有受影响的目标文件. 如果你在做开发的工作,那么这个选项很有用,但是如果你只是想 编译一次并且安装,那么这就是浪费时间.目前,这个选项只有在 你使用 GCC 的时候才管用.

如果你喜欢用那些和 configure 找出来的不同的 C 编译器,那么你可以你的环境变量 CC 设置为你选择的程序。缺省时,configure 将 选择 gcc,除非着在该平台上不合适。 类似地,你可以用 CFLAGS 变量覆盖缺省编译器标志.

你可以在 configure 命令行上声明环境变量, 比如:

./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'

2.

制作

开始制作,敲入

gmake

(一定要记得用 GNU make.) 依你的硬件而异,制作过程可能需要 5 分钟到半小时.显示的最后一行应该是

All of PostgreSQL is successfully made. Ready to install.

3.

回归测试

如果你想在安装文件前测试新制作的服务器, 那么你可以在这个时候运行回归测试. 回归测试是一个用于验证PostgreSQL在你的系统上是否按照 开发人员设想的那样运行的测试套件. 敲入

gmake check

(这条命令在 root 里无法使用;请在非特权用户下运行该命令.) 很有可能有些测试因为错误信息的用语或浮点结果的问题而失败. 文件 Chapter 13 包含关于如何解释测试结果的详细信息. 你可以在以后的任何时间通过执行这条命令来运行这个测试.
4.

安装文件

注意: 如果你正在升级一套现有的系统并且准备把新文件安装在旧文件上面 ,那么你现在就应该备份数据并关闭你的旧服务器,象上面 Section 1.4里面解释的那样.

要安装 PostgreSQL 键入

gmake install

这条命令将把文件安装到在 step 1里声明的 目录里面去.确保你对那个目录有足够的权限.通常你需要用 root 权限做这一步.或者你也可以事先创建目标目录并且分派合适的权限.

你可以使用 gmake install-strip 代替 gmake install,在安装可执行文件和库文件时 把它们的调试信息抽取掉.这样将节约一些空间.如果你编译时带着 调试支持,那么抽取将有效地删除调试支持,因此我们应该只是在不再需要 调试的时候做这些事情.install-strip 力图做一些合理的事情来节约空间,但是它并不知道如何从可执行文件中 抽取每个不需要的字节,因此,如果你希望节约所有可能节约的磁盘空间, 那么你可能需要手工做些处理.

如果你制作了 Python 接口而且你执行上面的命令时不是 root 用户,那么这些部分的安装可能失败.这时候你应该成为 root 用户然后

gmake -C src/interfaces/python install

如果你自己没有超级用户 权限:你还是可以安装必须的文件并且把她们放到其它的 Python 找得到的地方,怎么做就留给大家做练习吧. (译注:可以 man ld.so,注意里面的 LD_LIBRARYPATH,和 LD_PRELOAD 等变量.)

标准的安装只提供那些开发客户端应用的头文件. 如果你准备做任何服务器端的程序开发(比如用 C 写客户函数或者数据类型), 那么你可能就要把整个 PostgreSQL 头文件树安装到 你的目标头文件目录中.如果需要这么做,键入

gmake install-all-headers

安装这些东西需要一两兆空间,只有在你不想保留整个源码树用做引用用途 的情况下才需要这么做.(如果你保留了源码树,那么你可以用源码里面的 头文件制作服务器端的软件.

只装客户端∶. 如果你只想装客户应用和接口,那么你可以用下面的命令:

gmake -C src/bin install
gmake -C src/include install
gmake -C src/interfaces install
gmake -C doc install

卸载. 要撤销安装可以使用命令 gmake uninstall.不过这样不会删除任何创建出来的目录.

清理. 在安装完成以后,你可以通过在源码树里面用命令gmake clean 删除制作文件.这样会保留 configure 程序生成的文件,这样以后你就可以 用 gmake 命令重新制作所有东西. 要把源码树恢复为发布时的状态,用 gmake distclean 命令.如果你想从同一棵源码树上为多个不同平台制作,你就一定要 运行这条命令并且为每个制作重新配置.

如果你执行了一次制作,然后发现你的配置选项是错误的, 或者你修改了任何 configure 所探测的东西(比如,升级了软件) ,那么在重新配置和制作之前 运行一下 gmake distclean 是个好习惯.如果不做这个事情, 你修改的配置选项可能无法传播到所有需要变化的地方.

1.6. 安装后设置
1.6.1. 共享库

在一些有共享库的系统里(大多数系统都有). 你需要告诉你的系统如何找到新安装的共享库. 那些并不是必须做这个工作的系统包括 BSD/OS FreeBSD, HP/UX, Irix, Linux, NetBSD, OpenBSD, Tru64 UNIX, (以前的Digital UNIX), 和 Solaris.

设置共享库的搜索路径的方法因平台而异, 但是最广泛使用的方法是设置环境变量 LD_LIBRARY_PATH,比如:在 Bourne shells sh,ksh,bash,zsh)

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

或者在csh或tcsh里

setenv LD_LIBRARY_PATH /usr/local/pgsql/lib

把/usr/local/pgsql/lib换成你在step 1 时设置的 --libdir. 你应该把这些命令放到启动文件,如 /etc/profile 或 ~/.bash_profile 里面. 和这个方法相关的一些注意事项和很好的信息可以在 找到.

在有些系统上,更好的方法可能是在制作之前 设置环境变量 LD_RUN_PATH.

在 Cygwin 里,把库目录 放在 PATH 或者把 .dll 文件 移动到 bin/ 目录。

如果有疑问,请参考你的系统的手册页. (可能是 ld.so 或 rld). 如果稍后你收到下面这样的信息

psql: error in loading shared libraries
libpq.so.2.1: cannot open shared object file: No such file or directory

那么这一步就是必须的了.只需关注一下就是了.
1.6.2. 环境变量

如果你安装到 /usr/local/pgsql或者其他什么的缺省时不搜索程序的地方, 那你应该在你的PATH环境变量里面增加一个 /usr/local/pgsql/bin (或者是你在 step 1时给选项 --bindir 设置的任何值) 严格说,这些都不是必须的,但这么做可以让你使用PostgreSQL更方便。

要做这些事情,把下面几行加到你的 shell 启动文件,如 ~/.bash_profile (或 /etc/profile--如果你想影响所有用户):

PATH=/usr/local/pgsql/bin:$PATH
export PATH

如果你用的是csh或者tcsh,那么用这条命令:

set path = ( /usr/local/pgsql/bin $path )

为了让你的系统找得到 man(手册) 文档,你需要加类似下面的一行到一个shell启动文件里 (除非你安装到了缺省时搜索的位置):

MANPATH=/usr/local/pgsql/man:$MANPATH
export MANPATH

环境变量PGHOST和PGPORT为 客户端应用声明了数据库服务器的主机和端口,覆盖了那些 编译时的缺省项.如果你想从远端运行客户端应用, 那么每个准备使用该数据库的用户都设置PGHOST 将会非常方便.但这不是必须的,而且大部分客户端程序也可以 通过命令行选项替换这些设置.

Chapter 2. 在 Windows 上安装

尽管 PostgreSQL 是为 Unix 类操作系统写的, C 的客户端库(libpq)和交互 终端(psql)还是可以在 Windows 本地 编译. 在 Postgres 里包含的 makefiles 是为 Microsoft Visual C++很可能在其他系统里无法使用。 在其他情况下手工编译这个库应该是可能的。

技巧: 如果你使用的是 Windows 98 或更新的 Windows 那么你可以用 "Unix 方法"制作和使用所有 PostgreSQL 不过你要先安装 Cygwin 工具. 请参阅 Chapter 1.

要制作在Windows制作所有可能做的东西, 把目录改变到 src 目录,然后键入命令

nmake /f win32.mak

这里假设你的路径里有 Visual C++.

制作将生成下面的文件:

interfaces\libpq\Release\libpq.dll

动态链接的前端库
interfaces\libpq\Release\libpqdll.lib

你的程序和libpq.dll链接的输入库
interfaces\libpq\Release\libpq.lib

前端库的静态库版本
bin\psql\Release\psql.exe

Postgresql 交互的 SQL 终端

唯一需要安装的文件是 libpq.dll 库。这个文件在大多数情况下应该放在 WINNT\SYSTEM32 目录里(或 者在 Windows 95/98/ME 系统的 WINDOWS\SYSTEM 目录里)。如果此文件是用一个 setup 程序安装的,那么它应该在 安装前用文件里的 VERSIONINFO 资源检查版本, 以确保现有新版本的库不会被覆盖。

如果你准备在这台机器上使用libpq进行开发,你要把 src\include 和 src\interfaces\libpq 目录加入到 你的编译器设置的包含路径里。

要使用库,你必须把文件 libpqdll.lib 增加到你的项目里( 在 Visual C++ 里,只需要右键点击项目然后选择增 加库)。

原文转自:http://www.ltesting.net