安装过程

PostgreSQL 安装

对于全新安装或从前面版本的 PostgreSQL 升级安装:

    创建 PostgreSQL 超级用户帐号。这是运行服务器的用户。用于生产时你可以创建一个独立的非特权的用户(常用 postgres)。如果你没有 root 权限而只是想试试,你自己的用户帐号就足够了。

    rootbin 或者其他有特殊权限的用户身份运行 PostgreSQL 存在安全问题;别这么干.实际上 postmaster 将拒绝以 root 身份运行.

    你不必在这个帐号下制作和安装它(尽管你可以这么做)。当需要你以数据库超级用户登录时(安装程序)会提示你。

    为你的系统配置源代码.在这个阶段你可以为制作过程声明你的实际安装路径,以及选择要安装什么。进入 src 子目录并键入:

    > ./configure
    后面跟着任何你想给它的选项。对于第一次安装,不带选项就挺好的。要取得选项完整列表,键入:
    > ./configure --help
    一些最常用的如下:
    --prefix=BASEDIR
    为安装 PostgreSQL 选择一个不同的基础路径。缺省是 /usr/local/pgsql
    --enable-locale
    如果你想用本地化支持。
    --enable-multibyte
    允许使用多字节字符编码。这个选项主要用于象日语,韩语或中文这样的语言。
    --with-perl

    制作 Perl 接口和 plperl 扩展语言。请注意 Perl 接口将安装到 Perl 模块的常用位置(典型的是在 /usr/lib/perl),所以要成功使用这个选项,你必须有 root 权限。(最简单的方法通常是开始时不选 --with-perl,在编译完 PostgreSQL 本身之后再制作和安装 Perl 接口.)
    --with-odbc
    制作 ODBC 驱动包.
    --with-tcl
    制作 Tcl/Tk 需要的接口库和程序,包括 libpgtcl,pgtclsh,和 pgtksh。

     
    编译程序.键入
    > gmake
    编译过程可能耗时 10 分钟到一个小时。具体到你的时间很可能有变化。记得要用 GNU make。

    显示的最后一行很有可能是

    All of PostgreSQL is successfully made. Ready to install.
    如果你想在安装之前测试新制作的服务器,你可以这个时候运行蜕变测试.蜕变测试时一个测试套件,用以核实 PostgreSQL 在你的平台上按照开发人员的预期方式运行.相关的更多细节请参考 蜕变测试.(确包运行 "并行蜕变测试" 方法,因为串行方式只用于一套已经安装了的服务器.)

    如果你不是升级现有系统那么跳到 步骤 7

    现在你需要备份你现有的数据库。要从新近的v6.0以后的数据库中输出数据,键入下面命令

    > pg_dumpall > db.out
    如果你希望保留对象标识(oid),就需要在运行 pg_dumpall 时使用 -o 参数.不过,除非你有特殊的原因需要这么做(比如说 OID 是表中的键字等),否则不要使用它.

    确保你用的 pg_dumpall 命令来自你目前正在运行的数据库版本。7.0 的 pg_dumpall 可以用于老数据库.不过,如果你还在使用 6.0,不要使用 v6.0 中的 pg_dumpall脚本,否则所有东西都将被PostgreSQL超级用户所有。这时你应该使用晚一点的 6.x.x 版本的 pg_dumpall。7.0 的 pg_dumpall 不能在旧数据库上工作。如果你从一个早于 Postgres95 v1.09 的版本上进行升级,那你必须备份你的数据库,安装 Postgres95 v1.09,恢复你的数据库,然后再备份之.

     
    注意
    你必须确保你的数据库不会在你备份的中间进行更新.如果必要的话,把postmaster宕下来,编辑 /usr/local/pgsql/data/pg_hba.conf 里的权限,使得只有你可以操作,再把 postmaster 运行起来进行备份.
    如果你正在对一个已有的系统进行升级,则现在杀掉数据库服务进程,键入
    > ps ax | grep postmaster
    > ps -e | grep postmaster
    (哪个能用取决于你用的系统.敲错了不会有什么损害.)这样应该列出一些进程的进程号,类似下面:
      263  ?  SW   0:00 (postmaster)
      777  p1 S    0:00 grep postmaster
    键入下面命令,把 pid 替换成进程 postmaster 的进程号(这里是 263).(不要使用进程 "grep postmaster" 的进程号.)
    > kill pid
    小技巧:在那些系统启动时自动运行PostgreSQL 的机器上,可能会有一个启动文件可以完成这件事.例如在 Redhat Linux 系统里,我们可能发现
    > /etc/rc.d/init.d/postgres.init stop
    也可以用
     
    还有把旧目录删除。键入:
    > mv /usr/local/pgsql /usr/local/pgsql.old
    (替换为你自己的路径)。

  1. 安装 PostgreSQL 可执行文件和库.键入
    > gmake install
    你应该用你所希望的可执行文件所有者的身份做这一步.该用户不一定是数据库超级用户,有些人喜欢把安装文件由 root 所有.

    如果需要的话,告诉你的系统如何找到共享库。如何实现这些因平台而异。最广泛地被使用的方法是设置环境变量 LD_LIBRARY_PATH

    > LD_LIBRARY_PATH=/usr/local/pgsql/lib
    > export LD_LIBRARY_PATH
    在 sh,ksh,bash,zsh 里,或
    > setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
    在 csh 或 tcsh 里.你可能把这些放到一个 shell 启动文件里,象  /etc/profile

    在一些系统里,下面的方法是最好的方法,但是你必须有 root 权限。编辑文件 /etc/ld.so.conf,增加一行

    /usr/local/pgsql/lib
    然后运行命令 /sbin/ldconfig

    如果还有疑问,参考你的系统的手册页。如果你稍后看到这样的信息

    psql: error in loading shared libraries
    libpq.so.2.1: cannot open shared object file: No such file or directory
    么上面的步骤是必须的。简单地重新做一遍。(译注:我在测试7.0 beta1时发现还要设置 export PGLIB=/usr/local/pgsql/lib 下面的 initdb 才能正确运行。请各位注意。)

    创建数据库安装(工作数据文件)。你必须用 PostgreSQL 超级用户帐号登录执行这一步。以 root 是不能进行这一步的。

    > mkdir /usr/local/pgsql/data
    > chown postgres /usr/local/pgsql/data
    > su - postgres
    > /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
    -D 选项声明数据存储的位置。你可以使用任何你想用的路径,它不必在安装目录里。在运行 initdb 前只要确保数据库超级用户帐户可以写(或者创建它,如果该目录不存在)那个目录就行了。(如果你到目前为止一直用PostgreSQL 超级用户进行安装,你可能需要暂时以 root 登录以在 root 所有的区域创建一个数据目录。)

    前面的步骤应该已经告诉你如何启动数据库服务器。现在就做。该命令看起来应该象

    > /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
    这样将在前台启动数据库服务器。要把它放到后台,使用-S 选项,但是这样一来你就看不到任何日志信息。更好的把服务器放到后台的方法是
    > nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \
        </dev/null >>server.log 2>>1 &
    如果你是从现有的节点升级数据库,把数据恢复回来:
    > /usr/local/pgsql/bin/psql -d template1 -f db.out
    你可能还要把旧的 pg_hba.conf 文件和任何其他你为认证设置的文件,象口令文件等拷贝回来。
这样就正确完成安装了。为了让生活更丰富和有趣,你应该看看下面的可选步骤和建议。 要开始试验 Postgres,把路径按照上面说的设置好然后启动服务器.要创建数据库,键入
> createdb testdb
然后输入
> psql testdb
与那个数据库联接.在提示符上输入 SQL 命令并开始试验.