PostgreSQL 9.3.4 文档 | ||||
---|---|---|---|---|
Prev | Up | Chapter 15. 从源代码安装 | Next |
一般说来,一个现代的与 Unix 兼容的平台应该就能运行PostgreSQL。 到发布为止已经明确测试过的平台的列表在 Section 15.6中列出。在发布的doc子目录里面有许多平台相关的 FAQ文档,如果你碰到问题你可能会需要参考它们。
编译PostgreSQL需要下列软件包:
要求GNU make版本3.80或以上;其他的make程序或更老的GNU make版本将不会工作。GNU make通常以名字gmake安装,本文档将总是以这个名字来引用它(在某些系统上GNU make是默认工具,且名称为make)。要测试GNU make可以输入:
gmake --version
你需要一个ISO/ANSI C 编译器(至少是 C89兼容的)。我们推荐使用最近版本的GCC,不过,众所周知的是PostgreSQL可以利用许多不同厂商的不同编译器进行编译。
除了gzip和bzip2之外,我们还需要tar来解包源代码发布。
默认时将自动使用GNU Readline库。它允许psql(PostgreSQL的命令行 SQL 解释器)记住你输入的每一个命令并且允许你使用箭头键来找回和编辑之前的命令。如果你不想用它,那么你必需给configure声明--without-readline选项。作为一种可选方案,你常常可以使用 BSD许可证的libedit库,它最初是在NetBSD上开发的。libedit库是GNU Readline兼容的, 如果没有发现libreadline或者configure使用了--with-libedit-preferred选项,都会使用这个库。如果你使用的是一个基于包的 Linux 发布,那么要注意你需要readline和readline-devel两个包,特别是如果这两个包在你的版本里是分开的时候。
默认的时候将使用zlib压缩库。 如果你不想使用它,那么你必须给configure声明--without-zlib选项。使用这个选项关闭了在pg_dump和pg_restore中对压缩归档的支持。
下列包是可选的。在默认配置的时候并不要求它们,但是如果打开了一些编译选项之后就需要它们了,如下文所解释的:
要编译服务器端编程语言PL/Perl,你需要一个完整的Perl安装, 包括libperl库和头文件。 因为PL/Perl是一个共享库,libperl库在大多数平台上也必须是一个共享库。 最近的版本的Perl好像已经默认这样做了,但是早先的版本可不是这样的, 而且这总是一种在站点上安装 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或者类似的什么东西,不会被安装到系统里)。 如果你看到这些东西,那么你就必须重新手工编译并安装Perl,这样才能编译PL/Perl。 在配置Perl的过程中,要求一个共享库。
要编译PL/Python服务器端编程语言, 你需要一个Python的安装,包括头文件和distutils模块。最低的版本要求是Python 2.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标志运行 2.3 或更高版本的Python的 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的认证或者加密,那你需要相应的包。
要编译PostgreSQL文档,有一些独立的要求集,请见Section J.2. 。
如果你正从Git树而不是使用发布的源代码包进行编译,或者你想做服务器端开发, 那么你还需要下面的包:
如果你需要从 Git 检出中编译,或者你修改了实际的扫描器和分析器的定义文件, 那么你需要 GNU 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 用于存放编译过程中的源码树和大约 20 MB 用于安装目录。 一个空数据库集簇大概需要 35 MB。一个数据库所占的空间大约是存储同样数据的平面文件所占空间的五倍。如果你要运行回归测试,还临时需要额外的 150MB。请用df命令检查剩余磁盘空间。