PostgreSQL 9.3.1 文档 | ||||
---|---|---|---|---|
上一页 | 上一级 | 章 15. 源码安装 | 下一页 |
一般说来,一个现代的与 Unix 兼容的平台应该就能运行PostgreSQL。 第 15.6 节列出了到发布为止已经明确测试过的平台。 在发布的doc子目录里面有许多平台相关的FAQ, 如果你碰到问题你可能会需要参考它们。
编译PostgreSQL需要下面的软件包:
需要GNU make的3.80版本或者更新版本; 不能使用其它make 程序或者老版本的GNUmake。 GNU make常被安装为gmake的名字。 本文档将一直使用这个名字称呼它(在一些系统上GNUmake是名字叫make的缺省工具)。 要想测试GNUmake,敲入:
gmake --version
你需要一个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 发布,那么要注意你需要readline和readline-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的时候, 则参阅 第 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文档,有一套独立要求;参阅 第 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命令检查剩余磁盘空间。