+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++ <b>一:環境準備</b>
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
+++++ <b>二:安裝指令</b>:預設安裝位置 /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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++ <b>三:參數含義</b>
預設設定
安裝目标目錄 預設時所有檔案都将安裝到 /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 檔案将設定為在任何頭檔案被修改的時候都将重新編譯所有受影響的目标檔案。
--enable-dtrace
編譯 postgresql 支援動态跟蹤工具 dtrace 。
指向dtrace程式,設定環境變量dtrace。
這往往是必須的,因為 dtrace 通常安裝在 /usr/sbin 中且該目錄一般不在搜尋路經中。
備注:預設 linux 下沒有 dtrace ,有 strace 。