pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
配置
安装流程的第一步是为你的系统配置源码树并选择所需选项。这通过运行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=DIRECTORYPostgreSQL附带的手册页将安装在该目录下各自的man子目录中。默认值为x。PREFIX/man
我们已设法使 PostgreSQL 可以安装到共享的安装位置(例如 /usr/local/include)而不干扰系统其余部分的名字空间。首先,除非完全展开的目录名已经包含字符串 “postgres” 或 “pgsql”,否则字符串 “/postgresql” 会自动追加到 datadir、sysconfdir 和 docdir。例如,如果你选择 /usr/local 作为前缀,文档将安装在 /usr/local/doc/postgresql;但如果前缀是 /opt/postgres,则会安装在 /opt/postgres/doc。其次,7.2 版重新组织了 C 和 C++ 头文件的安装布局。客户端接口的公共头文件安装到 includedir 且名字空间是干净的。内部头文件和服务器头文件安装到 includedir 下的私有目录。如何获取各接口的头文件,参见程序员指南。最后,如果合适,还会在 libdir 下为动态可装载模块创建一个私有子目录。
--with-includes=DIRECTORIESDIRECTORIES是一个冒号分隔的目录列表,这些目录将被加入编译器搜索头文件的路径列表。如果把可选软件包(如 GNU Readline)安装在非标准位置,就必须使用此选项,并且很可能还要使用相应的--with-libraries选项。
例如:--with-includes=/opt/gnu/include:/usr/sup/include。
--with-libraries=DIRECTORIESDIRECTORIES是一个冒号分隔的搜索库的目录列表。如果软件包安装在非标准位置,你很可能需要使用此选项(以及相应的--with-includes选项)。
例如:--with-libraries=/opt/gnu/lib:/usr/sup/lib。
--enable-locale启用区域设置支持。区域设置支持会带来性能损失,但如果你不在英语环境中,你很可能需要它。
--enable-recode启用单字节字符集 recode 支持。关于此特性,参见 第 5.3 节。
--enable-multibyte允许使用多字节字符编码(包括 Unicode)和字符集编码转换。细节见 第 5.2 节。
注意,某些接口(如 Tcl 或 Java)期望所有字符串都是 Unicode,因此需要此选项才能正确支持这些接口。
--enable-nls[=LANGUAGES]启用本机语言支持(NLS),即以英语以外的语言显示程序消息的能力。 LANGUAGES 是一个用空格分隔的语言代码列表,列出你想要支持的语言,例如 --enable-nls='de fr'。(你的列表与实际提供的翻译集合的交集会自动计算。)如果你不指定列表,则安装所有可用的翻译。
要使用此选项,你需要一个 gettext API 的实现。某些操作系统内置了它(例如 Linux、NetBSD、Solaris),其他系统可以从这里下载附加软件包:http://www.postgresql.org/~petere/gettext.html。如果你使用的是 GNU C 库中的 gettext 实现,那么你还需要 GNU gettext 软件包提供的一些实用程序。对其他任何实现都不需要它。
--with-pgport=NUMBER将 NUMBER 设为服务器和客户端的默认端口号。 默认值是 5432。端口号以后始终都可以修改,但如果在这里指定, 那么服务器和客户端都会编译进同一个默认值,这可能很方便。 通常选择非默认值的唯一合理原因,是你打算在同一台机器上运行多个 PostgreSQL 服务器。
--with-CXX构建 C++ 接口库。
--with-perl构建 Perl 接口模块。Perl 接口将安装在 Perl 模块的惯常位置(通常在 /usr/lib/perl 之下),因此你必须有 root 权限才能执行安装步骤(见 步骤 4)。使用此选项需要已安装 Perl 5。
--with-python构建 Python 接口模块。你需要 root 权限才能把 Python 模块安装到其默认位置(/usr/lib/python)。要使用此选项,你必须已安装 Python,而且你的系统需要支持共享库。如果你想构建一个新的完整解释器二进制,就得手动做了。x.y
--with-tcl构建需要 Tcl/Tk 的组件,即 libpgtcl、pgtclsh、 pgtksh、PgAccess 和 PL/Tcl。但关于 --without-tk 请见下文。
--without-tk如果你同时指定 --with-tcl 和此选项,那么需要 Tk 的程序(pgtksh 和 PgAccess)将被排除。
--with-tclconfig=DIRECTORY--with-tkconfig=DIRECTORYTcl/Tk 会安装文件 tclConfig.sh 和 tkConfig.sh,其中包含构建与 Tcl 或 Tk 接口的模块所需的配置信息。这些文件通常会在其知名位置被自动找到,但如果你想使用不同版本的 Tcl 或 Tk,可以指定查找它们的目录。
--enable-odbc构建 ODBC 驱动。默认情况下该驱动独立于驱动管理器。要与你的系统上已安装的驱动管理器更好地配合,请在此选项之外再使用下面选项之一。更多信息见程序员指南。
--with-iodbc构建供 iODBC 使用的 ODBC 驱动。
--with-unixodbc构建供 unixODBC 使用的 ODBC 驱动。
--with-odbcinst=DIRECTORY指定 ODBC 驱动查找其 odbcinst.ini 配置文件的目录。默认为 /usr/local/pgsql/etc 或你通过 --sysconfdir 指定的值。应当让驱动与驱动管理器读取同一个文件。
如果使用了 --with-iodbc 或 --with-unixodbc 选项,此选项将被忽略,因为那时驱动管理器会处理配置文件的位置。
--with-java构建 JDBC 驱动及相关的 Java 软件包。此选项要求已安装 Ant(当然还需要 JDK)。更多信息参见 程序员指南 中的 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=NAMEKerberos 服务主体的名称。默认值为 postgres。可能没有理由更改它。
--with-openssl[=DIRECTORY]构建时加入对 SSL(加密)连接的支持。这要求已安装 OpenSSL 软件包。DIRECTORY 参数指定 OpenSSL 安装的根目录;默认为 /usr/local/ssl。
configure 会检查所需的头文件和库,以确保你的 OpenSSL 安装满足要求,然后才继续。
--with-pam构建时加入对 PAM(可插拔认证模块)的支持。
--enable-syslog使 PostgreSQL 服务器能够使用 syslog 日志设施。(使用此选项并不意味着你必须用 syslog 记录日志,甚至也不是默认就会这样做;它只是使运行时打开该选项成为可能。)
--enable-debug将所有程序和库编译为带调试符号的版本。这意味着你可以在调试器中 运行程序,以分析问题。这会显著增大安装后的可执行文件大小, 而且在非 GCC 编译器上,通常还会禁用编译器优化,从而导致变慢。 不过,保留这些符号对于处理可能出现的各种问题极其有帮助。 目前,只有在你使用 GCC 的情况下,才建议在生产安装中使用该选项。 但如果你在做开发工作或运行测试版,就应始终启用它。
--enable-cassert在服务器中启用 断言 检查,用于测试许多 “不可能发生”的条件。这对代码开发非常有价值,但这些 测试会使速度略有下降。此外,启用这些测试并不一定会增强 服务器稳定性!断言检查并未按严重程度分类,因此即使某个 bug 相对无害,只要触发了断言失败,仍会导致服务器重启。目前,该选项 不建议用于生产环境,但如果你在做开发工作或运行测试版, 就应当启用它。
--enable-depend启用自动依赖跟踪。启用后,makefile 会在任何头文件被修改时, 重新构建所有受影响的目标文件。如果你在做开发工作,这很有用; 但如果你只是打算编译一次并安装,这只是额外的开销。 目前该选项只在 GCC 下有效。
如果你希望使用与 configure 所选不同的 C 或 C++ 编译器,可以分别将环境变量 CC 或 CXX 设置为你选择的程序。类似地,你可以用 CFLAGS 和 CXXFLAGS 变量覆盖默认的编译器标志。例如:
env CC=/opt/bin/gcc CFLAGS='-O2 -pipe' ./configure
构建
要开始构建,输入
gmake
(记住要使用 GNU make。)构建过程需要 5 分钟到半小时不等的时间,具体取决于你的硬件。最后显示的一行应该是
All of PostgreSQL is successfully made. Ready to install.
回归测试
如果你想在安装之前测试新构建的服务器,可以在此时运行回归测试。 回归测试是一套测试用例,用于验证 PostgreSQL 在你的机器上按开发者预期的方式运行。输入
gmake check
(这不能以 root 身份运行;请以非特权用户身份执行。)由于错误消息措辞或浮点结果的差异,可能有些测试会失败。有关解释测试结果的详细信息,见 第 14 章。以后任何时候都可以用同一命令重复此测试。
安装文件
如果你是在升级现有系统并打算把新文件安装在旧文件之上,那么现在你应当已经按上面 第 1.4 节 的说明备份了数据并关闭了旧服务器。
要安装 PostgreSQL,输入
gmake install
这会把文件安装到 步骤 1 中指定的目录中。 请确保你有写入该区域的适当权限。通常你需要以 root 身份执行这一 步。或者,你也可以提前创建目标目录,并安排授予适当的权限。
如果你构建了 Perl 或 Python 接口,而在执行上述命令时你不是 root 用户,那么安装的这一部分很可能失败了。这种情况下你应当成为 root 用户然后执行
gmake -C src/interfaces/perl5 installgmake -C src/interfaces/python install
如果你没有超级用户 权限,那就只能自己想办法了:你仍然可以拿走所需的文件并把它们放到 Perl 或 Python 能找到的其他目录中,但具体怎么做就留作练习了。
标准安装只提供客户端应用开发所需的头文件。如果你打算做任何服务器端程序开发(例如用 C 编写的自定义函数或数据类型),那么你可能想把整个 PostgreSQL include 树安装到你的目标 include 目录。为此,输入
gmake install-all-headers
这会给安装增加一两 MB 的占用,而且只有当你不打算保留整个源码树供参考时才有用。(如果保留,构建服务器端软件时直接使用源码的 include 目录即可。)
仅客户端安装:. 如果你只想安装客户端应用和接口库,可以使用这些命令:
gmake -C src/bin installgmake -C src/include installgmake -C src/interfaces installgmake -C doc install
要撤销安装,使用命令 gmake uninstall。但是,这不会删除任何已创建的目录。
安装之后,你可以用命令 gmake clean 从源码树中删除构建出来的文件以腾出空间。这会保留 configure 程序生成的文件,这样你以后还能用 gmake 重新构建一切。要把源码树重置为分发时的状态,使用 gmake distclean。如果你打算从同一个源码树为多个平台构建,就必须为每次构建执行此操作并重新配置。
如果你完成了一次构建之后才发现 configure 选项有误,或者你更改了 configure 所探测的任何内容(例如安装了 GNU Readline), 那么最好在重新配置和重新构建之前先执行 gmake distclean。 否则,你对配置选项的更改可能不会传播到所有需要它的地方。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。