+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++ 一:环境准备
1.源码下载地址: https://www.postgresql.org/ftp/source/ 可以选择想要编译的版本
2.本次安装介质: postgresql-9.6.2.tar.gz
3.Linux版本:CentOS release 6.6 (Final) Linux version 2.6.32-504.16.2.el6.x86_64 gcc version 4.4.7
4.主机配置: MemTotal:132103552 kB CPU(s): 48 AuthenticAMD 2593.609MHZ DISK:1.5T
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++ 二:安装命令:默认安装位置 /usr/local/pgsql/ 各选项含义见第三部分
cd /data/soft/pg/postgresql-9.6.2
./configure --with-pgport=4321 --with-python --with-openssl --enable-debug --enable-coverage --enable-profiling --enable-cassert --enable-depend
gmake
gmake install
命令正常完成输出
[gmake] All of PostgreSQL successfully made. Ready to install.
[gmake install] PostgreSQL installation complete.
更改环境变量 [/etc/profile]
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
export PATH=/usr/local/pgsql/bin:$PATH
export MANPATH=/usr/local/pgsql/man:$MANPATH
source /etc/profile
备注:在带以下参数时报错,Linux没有相关安装包
[--with-ldap] configure: error: library 'ldap' is required for LDAP
[--enable-dtrace] configure: error: dtrace not found
[--with-ossp-uuid ] configure: error: library 'ossp-uuid' or 'uuid' is required for OSSP UUID
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++ 三:参数含义
缺省设置
安装目标目录 缺省时所有文件都将安装到 /usr/local/pgsql 目录
--prefix=PREFIX
安装目标目录
--exec-prefix=EXEC-PREFIX
体系相关的文件的存放位置,若无该参数,则安装到 --prefix 指定的目录
--bindir=DIRECTORY
声明可执行程序的目录,缺省是EXEC-PREFIX/bin ,通常也就是 /usr/local/pgsql/bin
--sysconfdir=DIRECTORY
设置各种配置文件的目录。缺省是 PREFIX/etc
--libdir=DIRECTORY
设置库文件和动态装载模块的目录。缺省是 EXEC-PREFIX/lib
--includedir=DIRECTORY
设置 C 和 C++ 头文件的目录。缺省是 PREFIX/include
--datarootdir=DIRECTORY
设置各种类型只读数据文件的根目录。这只设置了一些下面的缺省选项。缺省是 PREFIX/share
--datadir=DIRECTORY
设置使用安装程序的只读数据文件的目录,缺省是 DATAROOTDIR 。 请注意这与你的数据库文件放在哪里无关。
--localedir=DIRECTORY
设置安装现场数据的目录,特别是消息转变目录文件。缺省是 DATAROOTDIR/locale
--mandir=DIRECTORY
随着PostgreSQL 一起的手册页将安装到这个目录的 man 子目录里。 缺省是 DATAROOTDIR/man
--docdir=DIRECTORY
设置除 "man" 以外的文档文件的根目录。这只设置下面选项的缺省, 这个选项的缺省值是 DATAROOTDIR/doc/postgresql
--htmldir=DIRECTORY
PostgreSQL 的 HTML-格式文档将安装在这个目录。 缺省是 DATAROOTDIR
--with-includes=DIRECTORIES
DIRECTORIES 是一系列冒号分隔的目录(用于查找库文件), 这些目录将被加入编译器的头文件搜索列表中。
如果你有一些可选的包(比如GNU Readline)安装在非标准位置, 你就必须使用这个选项, 以及可能还有相应的 --with-libraries 选项。
--enable-nls[=LANGUAGES]
打开本地语言支持(NLS),也就是以非英文显示程序信息的能力。如果你没有声明一个列表,那么就安装所有可用的翻译。
--with-pgport=NUMBER
NUMBER为服务器和客户端的缺省端口(缺省是 5432)。
--with-perl
编译PL/Perl服务器端编程语言。
--with-python
编译PL/Python服务器端编程语言。
--with-tcl
编译PL/Tcl服务器端编程语言。
--with-tclconfig=DIRECTORY
Tcl安装的 tclConfig.sh 文件所在目录,它里面包含编译 Tcl 模块的配置信息。
--with-gssapi
编译支持GSSAPI认证的东西。
--with-krb5
编译支持 Kerberos 5 认证的东西。
--with-krb-srvnam=NAME
缺省的 Kerberos 服务主的名称(通过 GSSAPI 使用)。
--with-openssl
编译支持 SSL (加密的)连接。这个选项需要安装 OpenSSL 包。
--with-pam
编译PAM(可插拔认证模块)支持。
--with-ldap
编译 LDAP 支持。在 Unix 上,这需要 OpenLDAP 包的支持。
--without-readline
避免使用Readline与libedit库。 这样就关闭了psql 里的命令行编辑和历史,因此我们不建议这么做。
--with-libedit-preferred
优先使用 BSD-认证的libedit 库而不是GPL认证的Readline库。
该选项仅在同时安装了这两个库的情况下才有意义。 缺省使用Readline库。
--with-bonjour
编译 Bonjour 支持。这要求操作系统支持 Bonjour 。在 Mac OS X 上建议使用。
--with-ossp-uuid
使用 OSSP UUID library 编译组件。 特别是,编译 uuid-ossp 模块, 它提供了函数产生 UUIDs 。
--with-libxml
编译 libxml (开启SQL/XML支持)。需要 Libxml 2.6.23 或者更高版本支持这一特性。
--with-libxslt
当编译 xml2 模块时,使用 libxslt。 xml2依赖于这个库执行 XSL 转变成 XML 。
--disable-integer-datetimes
禁用 64 位的时间戳整数存储和时间间隔支持。并且作为浮点数存储时间值。开启和 PG 8.4 兼容。
--disable-float4-byval
禁用"按值传递" float4 值,使它们"通过引用"传递。 此选项消耗性能,为了兼容 C 程序并且使用 "版本 0"调用约定。
--disable-float8-byval
禁用"按值传递"传递 float8 值,使它们"通过引用"传递。 此选项消耗性能,为了兼容 C 程序并且使用 "版本 0"调用约定。
--with-segsize=SEGSIZE
设置段大小 ,以GB为单位。 大表被分成多个操作系统文件,每个文件的大小等同于段大小。默认段大小,1024MB 。
这可以帮助减少当大表工作时消耗掉的文件描述符数量。
请注意,改变这个值需要初始化数据库。
--with-blocksize=BLOCKSIZE
设置块大小,以 KB 为单位。这是表中存储和 I/O 单元。默认 8K ,范围 1K - 32K ,值是 2 的幂等。
请注意,改变这个值需要初始化数据库。
--with-wal-segsize=SEGSIZE
设置WAL段大小,以MB为单位。 这是WAL 日志中每个单独的文件的大小 。默认 16M ,范围 1M -64M ,值是 2 的幂等。
请注意,改变这个值需要初始化数据库。
--with-wal-blocksize=BLOCKSIZE
设置WAL块大小,以KB为单位。 这是WAL 日志中存储和 I/O 单元。默认 8K,范围 1K - 64K ,值是 2 的幂等。
--disable-spinlocks
允许在 PostgreSQL 没有该平台的 CPU 自旋锁支持的情况下编译成功。
--disable-thread-safety
禁用客户端库是线程安全的。 这样就允许在 libpq 和 ECPG 程序里的并发线程安全地控制他们私有的连接句柄。
--with-system-tzdata=DIRECTORY
PostgreSQL 包括它自己的时区数据库, 它要求对日期和时间操作。一般此项无用。Linux时区数据库默认为 /usr/share/zoneinfo 。
--without-zlib
避免使用 Zlib 库。这样就关闭了pg_dump 和 pg_restore 里面的压缩支持。一般此项无用。
--enable-debug
把所有程序和库以带有调试符号的方式编译。
这意味着你可以通过一个调试器运行程序来分析问题。
这样做显著增加了最后安装的可执行文件的大小。
推荐开发、研究、排查问题时、是 GCC 编译器时打开 。
--enable-coverage
如果使用 GCC,所有的程序和库连同代码覆盖测试仪器一起被编译。
在运行时,它们与代码覆盖率度量在编译目录下生成文件。
当做开发工作时,该选项仅用于 GCC 。
--enable-profiling
如果使用 GCC,则编译所有程序和库,使他们可以描绘轮廓。
在后端出口,创建子目录,包含分析使用的 gmon.out 文件。 当做开发工作时,该选项仅用于 GCC。
--enable-cassert
打开服务器中的断言(assertion)检查,它会检查许多"不可能发生"的条件。
推荐开发、研究、排查问题时时打开 。
--enable-depend
打开自动倚赖性跟踪。如果打开这个选项, 那么 makefile 文件将设置为在任何头文件被修改的时候都将重新编译所有受影响的目标文件。
推荐开发、研究、排查问题时、是 GCC 编译器时打开 。
--enable-dtrace
编译 PostgreSQL 支持动态跟踪工具 DTrace 。
指向dtrace程序,设置环境变量DTRACE。
这往往是必须的,因为 dtrace 通常安装在 /usr/sbin 中且该目录一般不在搜索路经中。
备注:默认 Linux 下没有 dtrace ,有 strace 。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++