15.2. 要求

一般说来,一个现代的与 Unix 兼容的平台应该就能运行PostgreSQL。 Section 15.6列出了到发布为止已经明确测试过的平台。 在发布的doc子目录里面有许多平台相关的FAQ, 如果你碰到问题你可能会需要参考它们。

编译PostgreSQL需要下面几样东西:

  • 需要GNU make的3.80版本或者更新版本; 不能使用其它make 程序或者老版本的GNUmake。 GNU make常被安装为gmake的名字。 本文档将一直使用这个名字称呼它(在一些系统上GNUmake是名字叫make的缺省工具)。 要想测试GNUmake,敲入:

    <kbd class="literal">gmake --version</kbd>
    
  • 一个ISO/ANSI C编译器(至少C89-标准)。 我们推荐使用最近版本的GCC。不过, 众所周知的是PostgreSQL可以利用许多不同厂商的不同编译器进行编译。

  • 除了gzip或者bzip2之外,还需要tar来解开发布。

  • 缺省时将自动使用GNU Readline库 它允许psql(PostgreSQL命令行SQL解释器)记住每个键入的命令, 并允许你使用箭头键来调用和编辑以前的命令。这是非常有帮助的,强烈推荐。 如果你不想用它,那么你必需给configure声明--without-readline选项。 作为替代,你可以经常使用BSD许可libedit的库,最初 在NetBSD上开发的。 如果没有发现libreadline,或者如果为configure指定--with-libedit-preferred, 可以使用与GNU Readline兼容的libedit库。 如果你使用的是一个基于包的 Linux 发布,那么要注意你需要readlinereadline-devel两个包, 特别是如果这两个包在你的版本里是分开的时候。

  • 缺省的时候将使用zlib压缩库。如果你不想使用它, 那么你必须给configure声明--without-zlib选项。 使用这个选项关闭了在pg_dump和 pg_restore里面压缩归档的支持。

下列包是可选的。在缺省配置的时候并不要求它们, 但是如果打开了一些编译选项之后就需要它们了,如下面解释的:

  • 要编译PL/Perl服务器端编程语言,你需要一个完整的Perl安装, 包括libperl库和头文件。因为PL/Perl是一个共享库, libperl库在大多数平台上也必须是一个共享库。 最新版本的Perl好像已经是缺省这么做了,但是早先的版本可不是这样的, 而且在任何安装了Perl的地方总是可选的。 如果你打算比偶尔使用PL/Perl编译更多, 你应确保编译带有usemultiplicity启用选项的Perl安装 (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或者类似的什么东西, 不会安装到系统里。如果你看到这些东西,那么你就必须重新手工编译并安装Perl, 这样才能编译PL/Perl。在配置Perl的过程中,要求一个共享库。

  • 要编译PL/Python服务器端编程语言,你需要一个Python的安装, 包括头文件和distutils模块。 最小所需版本是Python2.3。 如果版本是3.1或者更高版本,则支持Python 3;但是当使用Python 3的时候, 则参阅 Section 43.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标志运行Python 2.3或更高版本的configure 脚本。 在有些操作系统上,你不必非要编译一个共享库,不过你需要让PostgreSQL的编译系统知道这些。 参考src/pl/plpython目录中的Makefile获取细节。

  • 如果想编译PL/Tcl过程语言,那么当然需要安装Tcl了。 如果你使用Tcl先前的8.4版本,应该确保它不需要多线程支持。

  • 要打开本地语言支持(NLS),也就是说,用英语之外的语言显示程序的信息, 你需要一个Gettext API的实现。 有些操作系统内置了这些(比如Linux, NetBSD, Solaris), 对于其它系统,你可以从 http://www.gnu.org/software/gettext/下载一个额外的包。 如果你在GNU C库里面使用Gettext实现, 那么你就额外需要GNU Gettext包, 因为我们需要里面的几个工具程序。对于任何其它的实现,你应该不需要它。

  • 你需要Kerberos, OpenSSL, OpenLDAP,和/或者PAM, 如果你想支持使用这些服务的认证或者加密,那你需要这些包。

  • 为了编译PostgreSQL文档,有一套独立要求;参阅 Section J.2.

如果你从Git树中编译,而不是使用发布的源代码包, 或者你想做一些服务开发, 那么你还需要下面的包:

  • 如果你需要从Git校验中编译,或者你修改了扫描器和分析器的定义文件, 那么你需要Flex和Bison。如果你需要它们, 那么确保自己拿到的是Flex 2.5.31或更新的版本,以及Bison 1.875或者更新的版本。 其它的lex和yacc程序肯定是不行的。

  • 如果需要从Git校验中编译或者如果需要改变使用Perl脚本的任何编译步骤的输入文件,那么 需要Perl 5.8或者更新版本。如果在Windows上编译,那么你在任何情况下将需要 Perl。

如果你需要获取GNU包,你可以在GNU镜像站点 http://www.gnu.org/order/ftp.html或者ftp://ftp.gnu.org/gnu/ 找到它们。

请检查一下,看看你是否有足够的磁盘空间。 你将大概需要近100MB 用于存放安装过程中的源码树和大约20MB用于安装目录。 一个空数据库大概需要35MB。 然后在使用过程中大概需要在一个平面文本文件里存放同等数据量五倍的空间存储数据。 如果你要运行回归测试,还临时需要额外的150MB 。 请用df命令检查剩余磁盘空间。