©
本文档使用 PHP中文网手册 发布
一般说来,一个现代的与Unix兼容的平台应该就能运行PostgreSQL。 Section 15.7列出了到发布为止已经明确测试过的平台。 在发布的doc子目录里面有许多平台相关的FAQ, 如果你碰到问题你可能会需要参考它们。
编译PostgreSQL需要下面几样东西:
需要GNU make; 不能使用其它make程序。 GNU make常被安装为 gmake的名字。 本文档将一直使用这个名字称呼它 (在一些系统上GNU make 是名字叫make的缺省工具)。 要想测试GNUmake ,敲入:
gmake --version
我们建议使用版本3.76.1或者更新的版本
需要一个ISO/ANSIC编译器(至少兼容C89)。 我们推荐使用最近版本的GCC, 不过,众所周知的是 PostgreSQL 可以利用许多不同厂商的不同编译器进行编译。
除了gzip或bzip2。 之外, 还需要tar来解开发布。
缺省时将自动使用GNU Readline 库(这样可以方便地编辑和检索命令历史)。 它允许psql(PostgreSQL命令行的SQL解释)记住每个命令类型,并允许您使用箭头键召回和编辑以前的命令。 这是非常有用的,并且强烈推荐。 如果你不想用它,那么你必需给configure声明--without-readline选项。 如果没有发现 libreadline 可以使用与其兼容的libedit 库。 为configure指定--with-libedit-preferred选项将强制使用libedit 库。 如果你使用的是一个基于包的 Linux 发布,那么要注意你需要readline 和readline-devel 两个包, 特别是如果这两个包在你的版本里是分开的时候。
缺省的时候将使用zlib压缩库。 如果你不想使用它,那么你必须给configure声明--without-zlib选项。 使用这个选项关闭了在pg_dump 和pg_restore里面压缩归档的支持。
下列包是可选的。缺省配置的时候并不要求它们,但是如果打开了一些编译选项之后就需要它们了, 解释如下:
要编译PL/Perl服务器端编程语言,你需要一个完整的Perl安装, 包括libperl库和头文件。 因为PL/Perl是一个共享库, libperl 库在大多数平台上也必须是一个共享库。 最新版本的Perl好像已经是缺省这么做了,但是早先的版本可不是这样的, 而且这总是可选的。 如果你打算使用PL/Perl的附带功能,你应该确保 Perl安装建立usemultiplicity选项启用(perl -V将显示是否是这种情况)。
如果没有共享库,但却需要它,那么在PostgreSQL中将看到下面的信息, 指出这个问题:
*** 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 或者类似的什么东西,不会安装到系统里。 如果你看到这些东西,那么你就必须重新手工编译并安装PL/Perl ,这样才能编译PL/Perl。 在配置Perl的过程中,要求一个共享库。
要编译PL/Python服务器端编程语言,你需要一个Python的安装, 包括头文件和distutils模块。 Python的版本最低得是2.2,Python 3或者更高版本, 缺省时就带有distutils模块; 当使用版本是3时,请看 Section 42.1。
因为PL/Python将以共享库的方式编译, libpython 库在大多数平台上也必须是一个共享库。 在缺省的Python安装时不是这样的。 如果在编译和安装PostgreSQL之后, 你有一个叫做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参数运行Python2.3或更高版本的configure脚本。 在有些操作系统上,你不必非要编译一个共享库,不过你需要让PostgreSQL的编译系统知道这些。 参考src/pl/plpython目录中的Makefile获取细节。
如果想编译PL/Tcl语言, 那么当然需要安装Tcl了。 如果您在使用8.4或更低版本的Tcl,先确保它没有多线程支持。
要打开本地语言支持(NLS),也就是说,用英语之外的语言显示程序的信息, 你需要一个 Gettext API的实现。 有些操作系统内置了这些(比如Linux, NetBSD, Solaris),对于其它系统, 你可以从http://www.gnu.org/software/gettext/下载一个额外的包。 如果你在使用GNU(C库)里面的Gettext实现,那么你就额外需要GNU Gettext包, 因为我们需要里面的几个工具程序。对于任何其它的实现,你应该不需要它。
如果你想支持使用这些服务的认证或者加密,那么你需要Kerberos, OpenSSL, OpenLDAP, 和(或者)PAM这些包。
如果你从Git树中编译,而不是使用发布的源代码包,或者你想做一些服务器开发, 那么你还需要下面的包:
如果你需要从Git校验中编译,或者你修改了扫描器和分析器的定义文件, 那么你需要GNU Flex和Bison 。 如果你需要它们,那么确保使用的是Flex 2.5.31或更新的版本, 以及Bison1.875或者更新的版本。 其它的lex和yacc不可以使用。
建立一个Git校验时,需要Perl5.8或更高版本, 或者修改任何使用Perl脚本的构建步骤的输入文件。如果是在Windows下安装,那么必须安装Perl。
可以在GNU镜像站点http://www.gnu.org/order/ftp.html 或ftp://ftp.gnu.org/gnu/获取GNU包。
同时,还需要查看是否有足够大的磁盘空间。 你将大概需要近100MB用于存放安装过程中的源码树和大约20MB用于安装目录。 一个空数据库大概需要35MB。 然后在使用过程中大概需要在一个平面文本文件里存放同等数据量五倍的空间存储数据。 如果你要运行回归测试,还临时需要额外的150MB 。 请用df命令检查剩余磁盘空间。