就像前一章讲述的,在很多Linux发行版中你可以使用RPM包安装Postgresql。另外,你可以在任何UNIX兼容的系统中从源码创建和安装Postgresql,包括Mac OS X。
Postgresql的源码可以在http://www.postgresql.org找到。在这里,你将找到最新的源码以及下一个版本的beta测试版的源码。除非你很喜欢尝鲜,否则建议你使用最新的稳定版本。
你可以找到整个打包了的Postgresql的源码,可能是gzip压缩的tar打包文件,就像postgresql-9.0.0.tar.gz或者bzip2压缩的tar打包文件,就像postgresql-9.0.0.tar.bz2。在写本文的时候,Postgresql打包文件已经超过13MB了。
实际的文件名依赖于当前版本的修订号。
编译Postgresql相当简单。如果你熟悉编译开源产品,对你来说这里不会有任何意外。即使你是第一次编译和安装开源产品,你也不会觉得困难。
为了执行源码编译,你需要一个带有完整开发环境的Linux或UNIX系统。这包括C编译器和GNU的make工具(对于编译本数据库系统是必须的)。Linux发行版通常包含恰当的自由软件基金提供的GNU工具。这包含优秀的GNU C编译器(gcc),这也是Linux的标准编译器。绝大部分UNIX平台也都有GNU工具,我们推荐使用它们来编译Postgresql。你可以从http://www.gnu.org下载最新的工具。一旦你完成开发工具的安装,编译Postgresql就轻而易举了。
解压源码
使用普通用户开始安装。拷贝打包的源码到一个合适的目录用于编译。这个目录不需要(实际上,不应该)在最终Postgresql安装的位置。一个可能的位置是你home目录中的义工字幕了。因为你不需要超级用户权限用来编译Postgresql;超级用户权限仅仅在建立完成后安装的时候需要用一下。我们通常解压源码到专门用来管理产品源码的目录/usr/src,但你可以解压源码到任何有足够空间用于编译的地方。大概需要90M多一点空间存放解压后的源码。
解压打包的源码的命令如下:
$ tar zxf postgresql-9.0.1.tar.gz
解压的过程将建立新的目录,目录名依赖于你编译的Postgresql版本。进入目录:
$ cd postgresql-8.0.0
提示:在这个目录中你可以找到一个叫INSTALL的文件,这个文件包含了编译相关指令的详细手册,有些少见的情况自动化的过程会失败。
配置编译
建立过程使用一个叫configure的配置脚本针对你的特别平台来裁剪的建立参数。如果想接受所有默认参数,你可以简单的不带任何参数运行configure。以下为在一个Linux系统新运行configure的示例:
$ ./configure
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking which template to use… linux
checking whether to build with 64-bit integer date/time support… yes
checking whether NLS is wanted… no
checking for default port number… 5432
checking for block size… 8kB
checking for segment size… 1GB
checking for WAL block size… 8kB
checking for WAL segment size… 16MB
checking for gcc… gcc
…
configure脚本设置控制Postgresql生成方法的变量,统计编译的平台,C编译器提供的功能等。configure脚本将自动设置安装的位置。默认的Postgresql安装位置位于/usr/local/pgsql,包含应用程序和数据的子目录。
你可以使用configure的参数来改变默认位置,设置数据库服务器使用的网络端口以及附加的存储过程使用的服务端程序语言。这些选项在表3-3中列出。
表3-3 Postgresql配置脚本选项
@H_403_1@选项 | @H_403_1@描述 |
@H_403_1@–prefix=prefix | 安装到prefix指向的目录;默认为/usr/local/pgsql |
@H_403_1@–bindir=dir | 安装应用程序到dir;默认为prefix/bin |
@H_403_1@–with-docdir=dir | 安装文档到dir;默认为prefix/doc |
@H_403_1@–with-pgport=port | 设置默认的服务器端网络连接服务TCP端口号 |
@H_403_1@–with-tcl | 为服务端提供Tcl存储过程支持 |
@H_403_1@–with-perl | 为服务端提供Perl存储过程支持 |
@H_403_1@–with-python | 为服务端提供Python存储过程支持 |
你可以通过—help参数查看configure所有的选项。
$ ./configure –help
`configure’ configures Postgresql 9.0.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]… [VAR=VALUE]…
To assign environment variables (e.g.,CC,CFLAGS…),specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
…
$
你在这一步可以不设置数据库和日志文件的位置。你通常可以在安装完成后启动服务进程的时候指定这些位置。
构建软件
一旦编译完成,你可以通过make命令构建软件。Postgresql构建过程使用一套精密的makefile来控制编译过程。为了完成这个过程,我们建议你使用GNU版本的make工具。这是Linux默认的make工具。在其他的UNIX平台,你可能需要另外安装GNU make。通常这会用gmake这个名字,来区别于系统自带的make。在这里,我们说的make就是指GNU make。
如果一切正常,我们将看到大量的编译过程。我们将最终得到一切都成功完成的好消息。
当make完成后,你需要将程序复制到目标位置。你可以使用make完成,但你需要先切换到超级用户:
$ su
# make install
…
Postgresql installation complete.
# exit
$
一旦软件构建完成并安装好,你可以通过pg_config命令获得一份Postgresql系统的配置:
pg_config –bindir | –includedir | –libdir | –configure | –version
pg_config命令将回报Postgresql程序的安装目录(–bindir),C头文件的位置(–includedir)和库文件的目录(–libdir)以及Postgresql的版本(–version):
编译时的配置参数可以通过pg_config –configure查看。这将提供Postgresql服务程序配置用于编译的configure脚本的命令行参数。
以上就是安装Postgresql的内容。你现在已经有一套用于Postgresql数据库服务器的程序在你系统的适当位置了。
在这一点上,你和用安装包安装一样都处在相同的情况了。现在,是时候配置你安装的Postgresql了。
@H_403_1@原创文章,转载请注明: 文章地址PostgreSQL从菜鸟到专家 Linux和Unix系统上源码编译安装PostgreSQL