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

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 8.2 已于 2011 年 12 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

14.5. 安装过程 #

  1. Configuration

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

    ./configure
    

    该脚本会运行一系列测试来猜测各种系统相关变量的值并检测操作系统的某些特性,最后会在构建树中创建若干文件记录其发现。(如果希望把构建目录与源码树分开,也可以在源码树之外的目录中运行configure。)

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

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

    --prefix=PREFIX

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

    如有特殊需要,还可以用下列选项自定义各个子目录。不过,如果保持默认值,安装将是可重定位的,即安装之后可以移动该目录。(man和doc的位置不受此影响。)

    对可重定位安装,你可能想使用configure的--disable-rpath选项。此外,你还需要告诉操作系统如何找到共享库。

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

    --mandir=DIRECTORY

    PostgreSQL附带的手册页将安装在该目录下各自的manx子目录中。默认值为PREFIX/man。

    --with-docdir=DIRECTORY
    --without-docdir

    除“man”页之外的文档文件将安装到该目录。默认值为PREFIX/doc。如果指定了--without-docdir选项,make install将不会安装文档。这适用于对文档安装有特殊方法的打包脚本。

    注意

    为了能把 PostgreSQL 安装到共享安装位置 (例如 /usr/local/include),同时又不干扰系统其他部分的 名字空间,我们做了特别处理。首先,除非完整展开后的目录名已经包含字符串 “postgres” 或 “pgsql”,否则会自动把字符串 “/postgresql” 追加到 datadir、sysconfdir 和 docdir 上。例如,如果你选择 /usr/local 作为前缀,那么文档会安装到 /usr/local/doc/postgresql;但如果前缀是 /opt/postgres,那么它会安装到 /opt/postgres/doc。客户端接口的公共 C 头文件 会安装到 includedir 中,并且不会污染名字空间。 内部头文件和服务器头文件则会安装到 includedir 下的私有目录中。关于如何访问这些头文件,请参见各接口自己的文档。 最后,如果有需要,也会在 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 交互的模块所需的配置信息。通常会在已知位置自动找到此文件, 但如果要使用其他版本的 Tcl,可以指定查找它的目录。

    --with-krb5

    构建时支持 Kerberos 5 认证。在许多系统上,Kerberos 系统并不安装 在默认搜索的位置(如 /usr/include、 /usr/lib),因此除了此选项,还必须使用 --with-includes 和 --with-libraries。 configure 会检查所需的头文件和库,确保 Kerberos 安装满足要求,然后才会继续。

    --with-krb-srvnam=NAME

    Kerberos 服务主体的默认名称。默认值为 postgres。通常没有理由更改。

    --with-openssl

    构建时支持 SSL(加密)连接。这要求已安装 OpenSSL 软件包。configure 会检查 所需的头文件和库,确保 OpenSSL 安装满足要求, 然后才会继续。

    --with-pam

    构建时支持 PAM (可插拔认证模块)。

    --with-ldap

    构建时支持 LDAP 认证和连接参数查找(更多信息参见 第 29.15 节 和 第 20.2.5 节)。这要求已安装 OpenLDAP 软件包。configure 会检查所需的 头文件和库,确保 OpenLDAP 安装满足要求, 然后才会继续。在 Windows 上,使用默认的 WinLDAP 库。

    --without-readline

    禁止使用 Readline 库(也禁止 libedit)。此选项会禁用 psql 中的命令行编辑和历史记录, 因此不建议使用。

    --with-libedit-preferred

    优先使用 BSD 许可的 libedit 库,而不是 GPL 许可的 Readline。只有在两个库都已安装时, 该选项才有意义;在那种情况下,默认行为是使用 Readline。

    --with-bonjour

    构建时支持 Bonjour。这要求操作系统支持 Bonjour。 建议在 Mac OS X 上启用。

    --enable-integer-datetimes

    对日期时间和时间间隔使用 64 位整数存储,而不是默认的浮点数 存储。这缩小了可表示值的范围,但保证了整个范围内的微秒精度 (更多信息参见 第 8.5 节)。 另外请注意,整数日期时间代码比浮点数代码更新,我们至今仍会 时不时在其中发现缺陷。

    --disable-spinlocks

    即使 PostgreSQL 不支持该平台的 CPU 自旋锁, 也允许构建成功。缺少自旋锁支持会导致性能不佳;因此, 仅应在构建中止并告知平台缺少自旋锁支持时使用此选项。 如果在你的平台上构建 PostgreSQL 必须使用 此选项,请向 PostgreSQL 开发者报告该问题。

    --enable-thread-safety

    使客户端库成为线程安全的。这允许 libpq 和 ECPG 程序中的并发线程安全地 控制各自私有的连接句柄。此选项要求操作系统提供足够的线程支持。

    --without-zlib

    禁止使用 Zlib 库。这会禁用 pg_dump 和 pg_restore 对压缩归档的支持。 此选项仅用于没有该库的罕见系统。

    --enable-debug

    将所有程序和库编译为带调试符号的版本。这意味着你可以在调试器中 运行程序,以分析问题。这会显著增大安装后的可执行文件大小, 而且在非 GCC 编译器上,通常还会禁用编译器优化,从而导致变慢。 不过,保留这些符号对于处理可能出现的各种问题极其有帮助。 目前,只有在你使用 GCC 的情况下,才建议在生产安装中使用该选项。 但如果你在做开发工作或运行测试版,就应始终启用它。

    --enable-cassert

    在服务器中启用 断言 检查,用于测试许多 “不可能发生”的条件。这对代码开发非常有价值,但这些 测试只会稍稍拖慢速度。此外,启用这些测试并不一定会增强 服务器稳定性!断言检查并未按严重程度分类,因此即使某个 bug 相对无害,只要触发了断言失败,仍会导致服务器重启。目前, 该选项不建议用于生产环境,但如果你在做开发工作或运行测试版, 就应当启用它。

    --enable-depend

    启用自动依赖跟踪。启用后,makefile 会在任何头文件被修改时, 重新构建所有受影响的目标文件。如果你在做开发工作,这很有用; 但如果你只是打算编译一次并安装,这只是额外的开销。 目前该选项只在 GCC 下有效。

    --enable-dtrace

    编译时支持动态跟踪工具 DTrace。目前只有 Solaris 提供对 DTrace 的操作系统支持。

    可以设置环境变量 DTRACE 来指定 dtrace 程序。这通常是必要的,因为 dtrace 一般安装在 /usr/sbin 下,而该目录可能不在搜索路径中。还可以在环境变量 DTRACEFLAGS 中为 dtrace 程序 指定额外的命令行选项。

    要在 64 位二进制文件中包含 DTrace 支持,需要为 configure 指定 DTRACEFLAGS="-64"。例如, 使用 GCC 编译器时:

    ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
    

    使用 Sun 的编译器时:

    ./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
    

    如果你希望使用不同于 configure 所选的 C 编译器,可以将环境变量 CC 设为所选程序。默认情况下,configure 会在 gcc 可用时选择它,否则选择平台默认编译器(通常为 cc)。类似地,如有需要,可以使用 CFLAGS 变量覆盖默认编译器标志。

    可以在 configure 命令行上指定环境变量,例如:

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

    下面列出了可用这种方式设置的重要变量:

    CC

    C 编译器

    CFLAGS

    传递给 C 编译器的选项

    CPP

    C 预处理器

    CPPFLAGS

    传递给 C 预处理器的选项

    DTRACE

    dtrace 程序的位置

    DTRACEFLAGS

    传递给 dtrace 程序的选项

    LDFLAGS

    链接可执行文件或共享库时使用的选项

    LDFLAGS_SL

    仅链接共享库时的额外选项

    MSGFMT

    用于本地语言支持的 msgfmt 程序

    PERL

    Perl 解释器的完整路径。它将用于确定构建 PL/Perl 的依赖关系。

    PYTHON

    Python 解释器的完整路径。它将用于确定构建 PL/Python 的依赖 关系。

    TCLSH

    Tcl 解释器的完整路径。它将用于确定构建 PL/Tcl 的依赖关系。

    YACC

    Yacc 程序(使用 Bison 时为bison -y)

  2. 构建

    要开始构建,输入

    gmake
    

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

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

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

    gmake check
    

    (以 root 身份无法运行;请以非特权用户身份执行。) 第 28 章 包含 关于解释测试结果的详细信息。你可以在之后任何时候通过执行相同的 命令来重复此测试。

  4. 安装文件

    注意

    如果你正在升级现有系统,并打算把新文件安装在旧文件之上, 请务必按上文 第 14.4 节 所述, 先备份数据并关闭旧服务器,然后再继续。

    要安装 PostgreSQL,输入

    gmake install
    

    这会把文件安装到 步骤 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
    

    src/bin 中有少量仅供服务器使用的二进制文件, 但它们很小。

在 Windows 上注册 eventlog:.  要在操作系统中注册 Windows eventlog 库,请在安装后执行以下命令:

regsvr32 pgsql_library_directory/pgevent.dll

这会创建事件查看器使用的注册表项。

卸载:.  要撤销安装,可使用命令 gmake uninstall。但是,这不会删除任何已创建的目录。

清理:.  安装完成后,你可以用命令 gmake clean从源码树中删除构建的文件,以腾出空间。这会保留 configure 程序生成的文件,以便你之后能用 gmake 重新构建所有内容。要把源码树重置为发布时的状态, 可使用 gmake distclean。如果你要在同一个源码树中为 多个平台构建,就必须这样做并为每次构建重新配置。(或者,为每个 平台使用单独的构建树,使源码树保持未修改状态。)

如果你执行了构建,之后发现 configure 选项有误, 或者你更改了 configure 所考察的任何内容(例如软件 升级),那么最好在重新配置和重新构建之前先执行 gmake distclean。否则,你在配置选择上的更改可能 无法传播到所有需要的地方。

提交更正

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