↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 15 / 14
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.1 已于 2006 年 4 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

1.5. 安装过程 #

  1. 配置

    安装流程的第一步是为你的系统配置源码树并选择所需选项。这通过运行configure脚本来完成。默认安装只需输入

    ./configure
    

    此脚本会运行一系列测试来猜测各种系统相关变量的值,检测你的操作系统的一些特性,最后在构建树中创建若干文件记录其发现。

    默认配置将构建服务器和实用程序,以及所有只需要 C 编译器的客户端应用程序和接口。 默认情况下,所有文件都会安装到 /usr/local/pgsql 之下。

    可以通过向configure提供下列一个或多个命令行选项来自定义构建和安装过程:

    --prefix=PREFIX

    把所有文件安装在目录PREFIX而不是/usr/local/pgsql之下。实际文件会安装到各个子目录中;任何文件都不会直接安装到PREFIX目录本身。

    如果你有特殊需求,还可以用下面的选项自定义各个子目录。

    --exec-prefix=EXEC-PREFIX

    可以把体系结构相关的文件安装在不同于PREFIX所设置的另一个前缀EXEC-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。

    注意

    为减少对共享安装位置(例如 /usr/local/include)的污染,除非完全展开的目录名已经包含字符串 “postgres” 或 “pgsql”,否则字符串 “/postgresql” 会自动追加到 datadir、sysconfdir、includedir 和 docdir。例如,如果你选择 /usr/local 作为前缀,C 头文件将安装在 /usr/local/include/postgresql;但如果前缀是 /opt/postgres,则会安装在 /opt/postgres/include。

    --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-locale

    启用区域设置支持。区域设置支持会带来性能损失,但如果你不在英语环境中,你很可能需要它。

    --enable-recode

    启用单字节字符集 recode 支持。关于此特性,参见 第 5.3 节。

    --enable-multibyte

    允许使用多字节字符编码。这主要是为日语、韩语和中文之类的语言准备的。详情请阅读 第 5.2 节。

    --with-pgport=NUMBER

    把 NUMBER 设为服务器和客户端的默认端口号。默认值为 5432。端口以后总是可以更改的,但如果你在此处指定,服务器和客户端就会内置相同的默认值,这会非常方便。

    --with-CXX

    构建 C++ 接口库。

    --with-perl

    构建 Perl 接口模块。Perl 接口将安装在 Perl 模块的惯常位置(通常在 /usr/lib/perl 之下),因此你必须有 root 权限才能执行安装步骤(见 步骤 4)。使用此选项需要已安装 Perl 5。

    --with-python

    构建 Python 接口模块。你需要 root 权限才能把 Python 模块安装到其默认位置(/usr/lib/pythonx.y)。要使用此选项,你必须已安装 Python,而且你的系统需要支持共享库。如果你想构建一个新的完整解释器二进制,就得手动做了。

    --with-tcl

    构建需要 Tcl/Tk 的组件,即 libpgtcl、pgtclsh、pgtksh、pgaccess 和 PL/Tcl。但关于 --without-tk 请见下文。

    --without-tk

    如果你同时指定 --with-tcl 和此选项,需要 Tk 的程序(即 pgtksh 和 pgaccess)将被排除。

    --with-tclconfig=DIRECTORY
    --with-tkconfig=DIRECTORY

    Tcl/Tk 会安装文件 tclConfig.sh 和 tkConfig.sh,其中包含构建与 Tcl 或 Tk 接口的模块所需的某些配置信息。这些文件通常会在其惯常位置被自动找到,但如果你想使用其他版本的 Tcl 或 Tk,可以指定到哪个目录寻找它们。

    --enable-odbc

    构建 ODBC 驱动程序包。

    --with-odbcinst=DIRECTORY

    指定 ODBC 驱动到哪里找它的 odbcinst.ini 配置文件。默认为 /usr/local/pgsql/etc 或你为 --sysconfdir 指定的任何值。一个默认文件会被安装到那里。如果你打算在多个 ODBC 驱动之间共享 odbcinst.ini 文件,就可能需要使用此选项。

    --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(加密)连接的支持。这要求已安装 OpenSSL 软件包。DIRECTORY 参数指定 OpenSSL 安装的根目录;默认为 /usr/local/ssl。

    configure 会检查所需的头文件和库,以确保你的 OpenSSL 安装满足要求,然后才继续。

    --with-java

    构建 JDBC 驱动及相关的 Java 软件包。此选项要求已安装 Ant(当然还需要 JDK)。更多信息参见 程序员指南 中的 JDBC 驱动文档。

    --enable-syslog

    使 PostgreSQL 服务器可以使用 syslog 日志设施。(使用此选项并不意味着你必须用 syslog 记录日志,也不意味着默认就会这样做,它只是使得运行时可以打开这个选项。)

    --enable-debug

    编译所有程序和库时带上调试符号。这意味着你可以让程序在调试器中运行来分析问题。这会显著增大安装后的可执行文件的体积,而且在非 gcc 编译器上通常会同时关闭编译器优化,导致变慢。不过,带着这些符号对处理可能出现的任何问题都极有帮助。目前,此选项对生产安装来说价值有限,但如果你在做开发工作或运行 beta 版本,就应该打开它。

    --enable-cassert

    在服务器中启用断言检查,它们会测试许多“不可能发生”的情况。这对代码开发非常有价值,但这些测试会略微拖慢速度。而且,打开这些测试不一定能增强你服务器的稳定性!断言检查没有按严重程度分类,因此一个相对无害的 bug 一旦触发断言失败,仍会导致 postmaster 重启。目前不推荐在生产环境中使用此选项,但做开发工作或运行 beta 版本时应该打开它。

    如果你希望使用与 configure 所选不同的 C 或 C++ 编译器,可以分别将环境变量 CC 和 CXX 设置为你选择的程序。类似地,你可以用 CFLAGS 和 CXXFLAGS 变量覆盖默认的编译器标志。例如:

    env CC=/opt/bin/gcc CFLAGS='-02 -pipe' ./configure
    
  2. 构建

    要开始构建,输入

    gmake
    

    (记住要使用 GNU make。)构建过程可能需要 5 分钟到半小时不等。最后显示的一行应该是

    All of PostgreSQL is successfully made. Ready to install.
    
  3. 回归测试

    如果你想在安装之前测试新构建的服务器,可以在此时运行回归测试。 回归测试是一套测试用例,用于验证 PostgreSQL 在你的机器上按开发者预期的方式运行。输入

    gmake check
    

    由于错误消息措辞或浮点结果方面的差异,可能有些测试会失败。 第 12 章 包含 关于解释测试结果的详细信息。你可以在之后任何时候通过执行相同的命令重复此测试。

  4. 安装文件

    注意

    如果你是在升级现有系统,并且要把新文件安装到旧文件之上,那么此时你应该已经按上文 第 1.4 节 的说明备份了数据并关闭了旧服务器。

    要安装 PostgreSQL,输入

    gmake install
    

    这会把文件安装到 步骤 1 中指定的目录中。 请确保你有写入该区域的适当权限。通常你需要以 root 身份执行这一 步。或者,你也可以提前创建目标目录,并安排授予适当的权限。

    如果你构建了 Perl 或 Python 接口,而在执行上述命令时你不是 root 用户,那么安装的这一部分很可能失败了。这种情况下你应当成为 root 用户然后执行

    gmake -C src/interfaces/perl5 install
    gmake -C src/interfaces/python install
    

    由于 Perl 构建环境的一个怪癖,第一条命令实际上会重新构建整个接口然后再安装它。这没有危害,只是不常见。如果你没有超级用户权限,那就只能自己想办法了:你仍然可以拿走所需的文件并把它们放到 Perl 或 Python 能找到的其他目录中,但具体怎么做就留作练习了。

    标准安装只会安装客户端应用开发所需的头文件。如果你打算做任何服务器端程序开发(例如用 C 编写的自定义函数或数据类型),那么你可能想把整个 PostgreSQL include 树安装到你的目标 include 目录中。为此,输入

    gmake install-all-headers
    

    这会让安装占用增加一两 MB,而且只在你不打算保留整个源码树供参考时才有用。(如果保留了,构建服务器端软件时直接用源码的 include 目录即可。)

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

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

    要撤销安装,使用命令 gmake uninstall。但是,这不会删除 Perl 和 Python 接口,也不会删除任何目录。

安装之后,你可以用命令 gmake clean 从源码树中删除构建出来的文件以腾出空间。这会保留 configure 程序所做的选择,这样你以后还能用 gmake 重新构建一切。要把源码树重置为分发时的状态,使用 gmake distclean。如果你打算从同一个源码树为多个平台构建,就必须为每次构建执行此操作并重新配置。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。