打印

PostgreSQL学习文档 8.0 继续

Chapter 14. 安装指导

Table of Contents
14.1. 简版
14.2. 要求
14.3. 获取源码
14.4. 如果你是在升级
14.5. 安装过程
14.6. 安装后设置

    14.6.1. 共享库
    14.6.2. 环境变量

14.7. 支持的平台

这里 chapter 的信息描述从源代码发布安装 PostgreSQL。 (如果你安装的是预打包的版本,那么略过这一章 chapter 并且阅读打包的开发人员的指导。)
14.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.

TOP

14.2. 要求

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

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

    *

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

      gmake --version

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

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

      我们需要先用 gzip 将版本解压缩。
    *

      缺省时将自动使用 GNU Readline, (这样你可以方便地编辑和检索命令历史。) 如果你不想用它,那么你必需给 configure 声明 --without-readline 选项。 (在 NetBSD 上,libedit 库是 readline 兼容的, 如果没有发现 libreadline,则使用这个库。) 如果你使用的是一个基于包的 Linux 发布,那么要注意你需要 readline 和 readline-devel 两个包,特别是如果这两个包在你的版本里是分开的时候。
    *

      在 Windows 上安装 PostgreSQL 需要额外的软件。 你可以用 MinGW 制作基于 NT (比如 Windows XP 和 2003) 的 PostgreSQL Windows 版本; 参阅 doc/FAQ_MINGW 获取细节。 你也可以用 Cygwin 制作 PostgreSQL; 参阅 doc/FAQ_CYGWIN。 基于 Cygwin 的制作可以在更老的 Windows 版本上运转, 不过如果你可以选择,我们还是建议 MinGW 方法。 尽管这些是完整制作时我们建议的工具集,但我们还是可以使用其它 Windows 工具集制作 C 库 (libpq)和交互终端(psql)。 更多细节详见 Chapter 15

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

    *

      要制作服务器端编程语言 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 的安装,包括头文件和 distutils 模块。 对于 Python 1.6 或者更高版本,缺省时就带有 distutils 模块; 更早版本的 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,以提供这个共享库。

      如果有问题,用 --enable-shared 标志运行 2.3 或更高版本的 Python 的 configure。 在有些操作系统上,你不必非要制作一个共享库,不过你需要让 PostgreSQL 的制作系统知道这些。 参考 src/pl/plpython 目录的 Makefile 获取细节。
    *

      如果你想制作 PL/Tcl 语言, 你当然需要安装 Tcl 了。
    *

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

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

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

    *

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

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

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

TOP

14.3. 获取源码

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

gunzip postgresql-8.0.0.tar.gz
tar xf postgresql-8.0.0.tar

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

TOP

14.4. 如果你是在升级

新版本的PostgreSQL的内部数据存储格式可能会发生改变。因此, 如果你正在升级一个版本号不象"8.0.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 22.1.4

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

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

      pg_ctl stop

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

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

      是可以用的。

      非常老的版本上可能没有 pg_ctl。如果你找不到它或者它不能运转, 那么可以找出老服务器的进程 ID,比如,用下面命令

      ps ax | grep postmaster

      然后给它发信号让他停止:

      kill -INT processID

   4.

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

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

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

/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 22.4,, 不管怎样,我们都建议你好好读一下。

TOP

14.5. 安装过程

   1.

      配置

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

      ./configure

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

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

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

      --prefix=PREFIX

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

          如果你有特殊需要,你还可以用下面的选项客户化不同的子目录的位置。 不过,如果你把这些设置保留缺省,那么安装将是可重定位的,意思是你可以在安装过后移动目录。 (man 和 doc 位置不受这个影响。)

          对于可重定位的安装,你可能需要使用 configure 的 --disable-rpath 选项。 还有,你需要告诉操作系统如何找到共享库。
      --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。
      --mandir=DIRECTORY

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

          除"man(手册页)"以外的文档文件将被安装到这个目录。缺省是 PREFIX/doc。 如果声明了 --without-docdir,那么文档将不会被 make install 安装。 这是给那些使用特殊方法安装文档的打包脚本使用的。

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

      --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-nls[=LANGUAGES]

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

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

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

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

          制作 PL/Python 服务器端编程语言。
      --with-tcl

          制作服务器编程语言 PL/Tcl。
      --with-tclconfig=DIRECTORY

          Tcl 的安装文件 tclConfig.sh, 她们里面包含制作 Tcl 模块的配置信息。 Configure 通常会自动在她们的著名的位置找到这些文件, 但是如果你需要一个不同版本的 Tcl,你也可以声明可以找到她们的目录。
      --with-krb4
      --with-krb5

          制作支持Kerberos认证的东西。你可以选择 Kerberos 版本 4 或 5 之一,但不能同时选两个。 DIRECTORY 参数声明 Kerberos 安装的根目录;缺省假设是 /usr/athena 如果相关的头文件和库文件不在常用的父目录,那么你必须使用附加的 --with-includes 和 --with-libraries选项。 configure 在继续配置之前将检查所需要的头文件和库,以确保你的 Kerberos 是足够的
      --with-krb-srvnam=NAME

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

          制作支持 SSL (加密的)联接。 这个选项需要安装 OpenSSL 包。 configure 将在安装之前检查所需要的头文件和库文件以确信你的 OpenSSL 安装是充分的。
      --with-pam

          制作 PAM (可插拔认证模块)支持。

TOP

1.

      --without-readline

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

          制作 Rendezvous 支持。这要求你的操作系统支持 Rendezvous。 在 Mac OS X 上建议使用。
      --disable-spinlocks

          允许在 PostgreSQL 没有该平台的 CPU 自旋锁支持的情况下制作成功。 缺乏自旋锁的支持将导致性能恶化;因此,只有在制作过程退出, 并且告诉你说该平台缺乏自旋锁支持的时候才使用这个选项。 如果在你的平台上需要这个选项才能制作 PostgreSQL, 请向 PostgreSQL 开发者报告这个问题。
      --enable-thread-safety

          令客户端库是线程安全的。这样就允许在 libpq 和 ECPG 程序里的并发线程安全地控制他们私有的连接句柄。 这个选项要求你的操作系统上有足够的线程支持。
      --without-zlib

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

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

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

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

      如果你喜欢用那些和 configure 找出来的不同的 C 编译器,那么你可以你的环境变量 CC 设置为你选择的程序。缺省时,configure 将选择 gcc,只要是可用的, 或者是该平台的缺省(通常是 cc)。 除非着在该平台上不合适。类似地,你可以用 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 26 包含关于如何解释测试结果的详细信息。 你可以在以后的任何时间通过执行这条命令来运行这个测试。
   4.

      安装文件

          注意: 如果你正在升级一套现有的系统并且准备把新文件安装在旧文件上面, 那么要记得在覆盖之前备份数据并关闭你的旧服务器,象上面Section 14.4里面解释的那样。

      要安装 PostgreSQL 键入

      gmake install

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

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

      标准的安装只提供所有开发客户端应用的头文件和服务器端的程序开发,比如用 C 写客户函数或者数据类型,的头文件。 (在 PostgreSQL 8.0 之前,后者需要独立地执行一次 gmake install-all-headers 命令,不过现在这个步骤已经融合到了标准的安装步骤里面去了。)

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

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

在 Windows 上注册 eventlog: . 要在该操作系统上注册一个 Windows eventlog 库, 在安装完毕之后执行下面的命令:

regsvr32 pgsql_library_directory/pgevent.dll

这样就创建了一个用于事件查看器的注册表项目。

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

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

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

TOP

14.6. 安装后设置
14.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

那么这一步就是必须的了。只需关注一下就是了。

如果你用的系统势 BSD/OS, Linux,或者 SunOS 4, 并且你还有 root 权限,那么你可以在安装后运行

/sbin/ldconfig /usr/local/pgsql/lib

(或者相应的目录)以便让运行时链接器更快地找到共享库。 请参考 ldconfig 的手册页获取更多信息。在 FreeBSD, NetBSD,和 OpenBSD 上,命令是

/sbin/ldconfig -m /usr/local/pgsql/lib

我们不知道其它的系统有等效的命令。
14.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 将会非常方便。但这不是必须的,而且大部分客户端程序也可以通过命令行选项替换这些设置。

TOP

14.7. 支持的平台

到我们发布的时候为止, Postgres 开发者社区已经证明 PostgreSQL 8.0.0可以运行在下面平台上。 某种平台是被支持的通常意味着按照这些指导, 在这些平台上制作和安装了PostgreSQL, 并且通过了回归测试。"制作坊"条目表示该制作由 PostgreSQL 制作坊报告的。 那些显示一个老版本的 PostgreSQL 的平台是那些在版本 8.0 发布的时候没有明确测试过的平台, 但是我们认为它们还是可以运转的。

    注意: 如果你在支持的平台上安装碰到问题,请向 <pgsql-bugs@postgresql.org> 或 <pgsql-ports@postgresql.org>发送邮件,而不是向这里列出的人发邮件。

OS        处理器        版本        报告        附注
AIX        PowerPC        8.0.0        Travis P (<twp@castle.fastmail.fm>, 2004-12-12        又见 doc/FAQ_AIX
AIX        RS6000        8.0.0        Hans-Jürgen Schönig (<hs@cybertec.at>, 2004-12-06        又见 doc/FAQ_AIX
BSD/OS        x86        8.0.0        Bruce Momjian (<pgman@candle.pha.pa.us>,2004-12-07        4.2
Debian GNU/Linux        Alpha        7.4        Noèl Köthe (<noel@debian.org>,2003-10-25         
Debian GNU/Linux        AMD64        8.0.0        制作坊 panda, 快照 2004-12-06 01:20:02        sid, kernel 2.6
Debian GNU/Linux        ARM        8.0.0        Jim Buttafuoco (<jim@contactbda.com>, 2005-01-06         
Debian GNU/Linux        IA64        7.4        Noèl Köthe (<noel@debian.org>),2003-10-25         
Debian GNU/Linux        m68k        7.4        Noèl Köthe (<noel@debian.org>),2004-12-09        sid
Debian GNU/Linux        MIPS        8.0.0        制作坊 lionfish, 快照 2004-12-06 11:00:08        3.1 (sarge), kernel 2.4
Debian GNU/Linux        PA-RISC        8.0.0        Noèl Köthe (<noel@debian.org>),2004-12-07        sid
Debian GNU/Linux        PowerPC        8.0.0        Noèl Köthe (<noel@debian.org>),2004-12-15        sid
Debian GNU/Linux        S/390        7.4        Noèl Köthe (<noel@debian.org>),2003-10-25         
Debian GNU/Linux        Sparc        8.0.0        Noèl Köthe (<noel@debian.org>), 2004-12-09        sid,32位
Debian GNU/Linux        x86        8.0.0        Peter Eisentraut (<peter_e@gmx.net>), 2004-12-06        3.1 (sarge), kernel 2.6
Fedora        AMD64        8.0.0        John Gray (<jgray@azuli.co.uk>), 2004-12-12        FC3
Fedora        x86        8.0.0        制作坊 dog, 快照 2004-12-06 02:06:01        FC1
FreeBSD        Alpha        7.4        Peter Eisentraut (<peter_e@gmx.net>),2003-10-25        4.8
FreeBSD        x86        8.0.0        制作坊 cockatoo, snapshot 2004-12-06 14:10:01 Marc Fournier (<scrappy@postgresql.org>), 2004-12-07 (5.3)        4.10
Gentoo Linux        x86        8.0.0        Paul Bort (<pbort@tmwsystems.com>), 2004-12-07         
HP-UX        IA64        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2005-01-06        11.23, gcc 和 cc; 又见 doc/FAQ_HPUX
HP-UX        PA-RISC        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2005-01-06        10.20 和 11.11,gcc 和 cc; 又见 doc/FAQ_HPUX
IRIX        MIPS        7.4        Robert E. Bruccoleri (<bruc@stone.congenomics.com>),2003-11-12        6.5.20, 只能用 cc
MacOS X        PPC        8.0.0        Andrew Rawnsley (<ronz@ravensfield.com>), 2004-12-07        10.3.5
Mandrakelinux        x86        8.0.0        制作坊 shrew, 快照 2004-12-06 02:02:01        10.0
NetBSD        arm32        7.4        Patrick Welche (<prlw1@newn.cam.ac.uk>),2003-11-12        1.6ZE/acorn32
NetBSD        m68k        8.0.0        Rémi Zara (<remi_zara@mac.com>), 2004-12-14        2.0
NetBSD        Sparc        7.4.1        Peter Eisentraut (<peter_e@gmx.net>),2003-11-26        1.6.1, 32-bit
NetBSD        x86        8.0.0        制作坊 canary, 快照 2004-12-06 03:30:00        1.6
OpenBSD        Sparc        8.0.0        Chris Mair (<list@1006.org>), 2005-01-10        3.3
OpenBSD        x86        8.0.0        制作坊 emu, 快照 2005-01-06 00:50:05        3.6
Red Hat Linux        AMD64        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        IA64        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        PowerPC        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        PowerPC 64        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        S/390        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        S/390x        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Red Hat Linux        x86        8.0.0        Tom Lane (<tgl@sss.pgh.pa.us>), 2004-12-07        RHEL 3AS
Solaris        Sparc        8.0.0        Kenneth Marshall (<ktm@is.rice.edu>), 2004-12-07        Solaris 8,又见 doc/FAQ_Solaris
Solaris        x86        8.0.0        Build farm kudu, snapshot 2004-12-10 02:30:04 (cc); dragonfly, snapshot 2004-12-09 04:30:00 (gcc)        Solaris 9;又见 doc/FAQ_Solaris
SUSE Linux        AMD64        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        9.0, 9.1, 9.2, SLES 9
SUSE Linux        IA64        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        SLES 9
SUSE Linux        PowerPC        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        SLES 9
SUSE Linux        PowerPC 64        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        SLES 9
SUSE Linux        S/390        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        SLES 9
SUSE Linux        S/390x        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        SLES 9
SUSE Linux        x86        8.0.0        Reinhard Max (<max@suse.de>), 2005-01-03        9.0, 9.1, 9.2, SLES 9
Tru64 UNIX        Alpha        8.0.0        Honda Shigehiro (<fwif0083@mb.infoweb.ne.jp>), 2005-01-07        5.0
UnixWare        x86        8.0.0        Peter Eisentraut (<peter_e@gmx.net>), 2004-12-14        cc, 7.1.4;又见 doc/FAQ_SCO
Windows        x86        8.0.0        Dave Page (<dpage@vale-housing.co.uk>),2004-12-07        XP Pro;参阅 doc/FAQ_MINGW
带Cygwin 的 Windows        x86        8.0.0        制作坊gibbon, snapshot 2004-12-11 01:33:01        见 doc/FAQ_MSWIN

不支持的平台. 下列平台要么是已知无法运行,要么是它们可以运行在相当久以前的版本, 我们在这里列出这些平台是想让你知道,如果多加以注意这些平台可能是可以支持的。

OS        处理器        版本        报告        附注
BeOS        x86        7.2        Cyril Velter (<cyril.velter@libertysurf.fr>),2001-11-29        需要对信号灯代码进行更新
Linux        PlayStation 2        8.0.0        Chris Mair (<list@1006.org>), 2005-01-09        需要 --disable-spinlocks(能用,但是很慢)
NetBSD        Alpha        7.2        Thomas Thai (<tom@minnesota.com>),2001-11-20        1.5W
NetBSD        MIPS        7.2.1        Warwick Hunter (<whunter@agile.tv>),2002-06-13        1.5.3
NetBSD        PowerPC        7.2        Bill Studenmund (<wrstuden@netbsd.org>),2001-11-28        1.5
NetBSD        VAX        7.1        Tom I. Helbekkmo (<tih@kpnQwest.no>),2001-03-30        1.5
QNX 4 RTOS        x86        7.2        Bernd Tegge (<tegge@repas-aeg.de>),2001-12-10        需要更新信号灯代码; 又见 doc/FAQ_QNX4
QNX RTOS v6        x86        7.2        Igor Kovalenko (<Igor.Kovalenko@motorola.com>),2001-11-20        归档里有补丁,但是对7.2来说来得太迟
SCO OpenServer        x86        7.3.1        Shibashish Satpathy (<shib@postmark.net>),2002-12-11        5.0.4, gcc; 又见 doc/FAQ_SCO
SunOS 4        Sparc        7.2        Tatsuo Ishii (<t-ishii@sra.co.jp>),2001-12-04

TOP

Chapter 15. 在 Windows 上安装客户端

尽管完整的 Windows 版 PostgreSQL 只能用 MinGW 或者 Cygwin 编译, C 的客户端库(libpq)和交互终端 (psql)还是可以使用其它工具编译。 在 Postgres 里包含的 makefiles 是为 Microsoft Visual C++ 写的。 在其他配置下手工编译这个库应该是可能的。

    提示: 优选使用 MinGW 或者 Cygwin。 如果使用了其中一种工具集,请参阅 Chapter 14。

要用 Microsoft Visual C++ 制作在 Windows 里所有可能制作的东西, 把目录改变到 src 目录,然后键入命令

nmake /f win32.mak

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

要使用 Borland C++ 制作所有东西,进入目录 src 然后敲入命令

make -DCFG=Release /f bcc32.mak

制作将生成下面的文件:

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++ 里, 只需要右键点击项目然后选择增加库)。

TOP

16.1. PostgreSQL 用户帐户

和大量其它可以从外界访问的服务器守护进程一样, 我们也建议用一个独立的用户帐户运行PostgreSQL。 这个用户帐户应该拥有由这个服务器管理的数据,而且不应该与其他守护进程共享这些数据。 (比如,用nobody 用户是个烂主意。) 我们不建议把可执行文件安装为由此用户所有, 因为这样一来被攻破的系统就可以修改它们自己拥有的二进制文件。

要向你的系统里增加用户帐户,参考命令 useradd 或 adduser。 我们经常使用 postgres 的用户名,并且在本书中都假设这个名字,但你不必这么做。

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-9-9 00:02 京ICP证060528 号

Designed By 17DST