?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
配置
安裝過程的第一步就是配置源代碼樹并選擇你喜歡的選項(xiàng)。 這個(gè)工作是通過運(yùn)行configure腳本實(shí)現(xiàn)的,對(duì)于缺省安裝,你只需要簡(jiǎn)單地敲入
./configure
該腳本將運(yùn)行一些測(cè)試來決定一些系統(tǒng)相關(guān)的變量,并檢測(cè)操作系統(tǒng)的設(shè)置, 最后將在編譯樹中創(chuàng)建一些文件以記錄它找到了什么。如果你想保持編譯目錄的獨(dú)立, 那么你也可以在源代碼樹之外的其它目錄里運(yùn)行configure腳本。 這個(gè)過程也稱作VPATH編譯。 如下:
mkdir build_dir cd build_dir /path/to/source/tree/configure [options go here] gmake
缺省設(shè)置將編譯服務(wù)器和應(yīng)用程序,還有所有只需要C編譯器的客戶端程序和接口。 缺省時(shí)所有文件都將安裝到/usr/local/pgsql目錄。
你可以通過給出下面的一個(gè)或多個(gè)configure命令行選項(xiàng)來自定義編譯和安裝過程:
把所有文件裝在PREFIX目錄下而不是/usr/local/pgsql里。 實(shí)際的文件會(huì)安裝到不同的子目錄里; 甚至沒有一個(gè)文件會(huì)直接安裝到PREFIX目錄里。
如果你有特殊需要,你還可以用下面的選項(xiàng)自定義不同子目錄的位置。 不過,即使你保持缺省設(shè)置,也可以在安裝之后移動(dòng)目錄(man和doc路徑不受影響),
此時(shí)你可能需要使用configure的--disable-rpath選項(xiàng)。 還有,你需要告訴操作系統(tǒng)如何找到共享庫(kù)。
把體系相關(guān)的文件安裝到EXEC-PREFIX , 而不是PREFIX設(shè)置的地方。 這樣做可以比較方便地在不同主機(jī)之間共享體系相關(guān)的文件。 如果你省略它,那么EXEC-PREFIX就會(huì)被設(shè)置為等于PREFIX 并且體系相關(guān)和體系無關(guān)的文件都會(huì)安裝到同一目錄樹下,當(dāng)然這也可能是你想要的。
需要聲明可執(zhí)行程序的安裝目錄,缺省是EXEC-PREFIX/bin, 通常也就是/usr/local/pgsql/bin。
設(shè)置配置文件的安裝目錄,缺省是PREFIX/etc。
設(shè)置庫(kù)文件和動(dòng)態(tài)裝載模塊的安裝目錄。缺省是EXEC-PREFIX/lib。
設(shè)置C和C++頭文件的目錄。缺省是PREFIX/include。
設(shè)置各種類型的只讀數(shù)據(jù)文件的根目錄,只是后面一些選項(xiàng)的缺省設(shè)置。缺省是PREFIX/share。
設(shè)置安裝的程序使用的只讀數(shù)據(jù)文件的目錄。缺省是DATAROOTDIR。 注意這與您的數(shù)據(jù)庫(kù)文件放置位置無關(guān)。
設(shè)置語言環(huán)境數(shù)據(jù)的安裝目錄,尤其是消息編譯目錄文件。缺省是DATAROOTDIR/locale。
PostgreSQL自帶手冊(cè)頁(yè)是安裝到各自的manx子目錄里。 缺省是DATAROOTDIR/man。
設(shè)置文檔文件的根安裝目錄,除了"man"。這只能設(shè)置為下列選項(xiàng)的默認(rèn)選項(xiàng)。 該選項(xiàng)的缺省值是 DATAROOTDIR/doc/postgresql。
PostgreSQL的HTML格式文件將安裝在這個(gè)目錄下,缺省是 DATAROOTDIR。
Note: 為了讓PostgreSQL能夠安裝在一些共享的安裝位置(比如/usr/local/include), 同時(shí)又不至于和系統(tǒng)其它部分產(chǎn)生名字空間干擾,我們采取了一些步驟。 首先,安裝腳本會(huì)自動(dòng)給datadir, sysconfdir, 和docdir 后面附加上""/postgresql"", 除非展開的完整路徑名已經(jīng)包含字符串"postgres"或"pgsql"。 比如,如果你選擇/usr/local作為前綴,那么文檔將安裝在/usr/local/doc/postgresql, 但如果前綴是/opt/postgres ,那么它將被放到/opt/postgres/doc 。 客戶接口的公共C頭文件安裝到了 includedir ,并且是名字空間無關(guān)的。 內(nèi)部的頭文件和服務(wù)器頭文件都安裝到includedir下的私有目錄中去了。 參考每種接口的文檔獲取關(guān)于如何得到頭文件的信息。 最后,如果合適,那么也會(huì)在libdir下創(chuàng)建一個(gè)私有的子目錄,用于動(dòng)態(tài)裝載模塊。
DIRECTORIES是一系列冒號(hào)分隔的目錄, 這些目錄將被加入編譯器的頭文件搜索列表中。 如果你有一些可選的包(比如GNU Readline)安裝在非標(biāo)準(zhǔn)位置, 你就必須使用這個(gè)選項(xiàng),以及可能還有相應(yīng)的--with-libraries選項(xiàng)。
例子: --with-includes=/opt/gnu/include:/usr/sup/include.
DIRECTORIES是一系列冒號(hào)分隔的目錄,這些目錄是用于查找?guī)煳募摹? 如果你有一些包安裝在非標(biāo)準(zhǔn)位置, 你可能就需要使用這個(gè)選項(xiàng)(以及對(duì)應(yīng)的--with-includesoption選項(xiàng))。
例子: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
打開本地語言支持(NLS),也就是以非英文顯示程序信息的能力。 LANGUAGES是一個(gè)可選空格分隔的語言代碼列表,標(biāo)識(shí)你想支持的語言。 比如--enable-nls='de fr'。 你提供的列表和實(shí)際支持的列表之間的交集會(huì)自動(dòng)計(jì)算出來。 如果你沒有聲明一個(gè)列表,那么就安裝所有可用的翻譯。
要使用這個(gè)選項(xiàng),你需要一個(gè)GettextAPI的實(shí)現(xiàn)。見上文。
NUMBER為服務(wù)器和客戶端的缺省端口(缺省是5432)。 這個(gè)端口可以在以后設(shè)置,不過如果你在這里聲明,那么服務(wù)器和客戶端就都有了相同的編譯好了的缺省值。 這樣會(huì)方便些。 通常選取一個(gè)非缺省值的原因是你要在同一臺(tái)機(jī)器上運(yùn)行多個(gè)PostgreSQL服務(wù)器。
編譯PL/Perl服務(wù)器端編程語言。
編譯PL/Python服務(wù)器端編程語言。
編譯PL/Tcl服務(wù)器端編程語言。
Tcl安裝的tclConfig.sh文件所在目錄里面包含編譯Tcl模塊的配置信息。 configure通常會(huì)自動(dòng)在約定俗成的位置找到這些文件, 但是如果你需要一個(gè)不同版本的Tcl,你也可以聲明不同的目錄。
編譯支持GSSAPI認(rèn)證。在許多系統(tǒng)上,GSSAPI(通常是Kerberos安裝的一部分) 沒有安裝在缺省的搜索目錄下(比如/usr/include, /usr/lib),所以你必須使用附加的--with-includes and --with-libraries選項(xiàng)。 configure在繼續(xù)配置之前將檢查所需要的頭文件和庫(kù),以確保GSSAPI是充分可用的。
編譯支持 Kerberos 5 在許多系統(tǒng)上,Kerberos 系統(tǒng)沒有安裝在缺省的搜索目錄下(比如 /usr/include, /usr/lib), 所以你必須使用附加的--with-includes 和 --with-libraries選項(xiàng)。 configure在繼續(xù)配置之前將檢查所需要的頭文件和庫(kù),以確保 Kerberos 是充分可用的。
Kerberos缺省的主服務(wù)主名(也被GSSAPI使用),缺省值是postgres,通常不可以修改這個(gè)值。 除非你有一個(gè)Windows環(huán)境,在這種情況下,它必須設(shè)置為大寫POSTGRES。
編譯支持SSL(加密的)連接。 這個(gè)選項(xiàng)需要安裝OpenSSL包。 configure將在安裝之前檢查所需要的頭文件和庫(kù)文件以確保OpenSSL安裝是充分可用的。
編譯PAM(可插拔認(rèn)證模塊)支持。
編譯LDAP支持。 用于認(rèn)證和查找連接參數(shù)(參見Section 31.16 and Section 19.3.7以獲取更多信息)。 在Unix上,這需要OpenLDAP包的支持。在Windows上,將使用缺省的WinLDAP庫(kù)。 configure將會(huì)檢查所需的頭文件和庫(kù)以確保OpenLDAP的安裝是充分可用的。
避免使用Readline與libedit庫(kù)。 這樣會(huì)關(guān)閉psql命令行編輯和歷史,因此建議不使用。
BSD許可優(yōu)先使用libedit庫(kù)而不是Readline庫(kù)。 該選項(xiàng)僅在同時(shí)安裝了這兩個(gè)庫(kù)的情況下才有意義,這時(shí)會(huì)缺省使用Readline庫(kù)。
編譯Bonjour支持。這要求操作系統(tǒng)支持Bonjour。 在Mac OS X系統(tǒng)上建議使用。
當(dāng)編譯contrib/uuid-ossp,使用OSSP UUID library。該庫(kù)提供生成的UUID的函數(shù)。
編譯libxml(允許SQL/XML支持)。該功能需要Libxml 2.6.23或更新的版本。
Libxml通過安裝xml2-config來檢測(cè)所需的編譯器和鏈接器選項(xiàng)。 如果發(fā)現(xiàn),PostgreSQL將自動(dòng)使用它。為了在指定位置來進(jìn)行l(wèi)ibxml安裝, 可以設(shè)置環(huán)境變量XML2_CONFIG來指向從屬安裝的xml2-config程序, 或使用的選項(xiàng)--with-includes和 --with-libraries。
當(dāng)編譯contrib/xml2時(shí),使用libxslt。contrib/xml2依靠這個(gè)庫(kù)來執(zhí)行由XSL轉(zhuǎn)換的XML。
禁用支持64位整數(shù)存儲(chǔ)時(shí)間戳和間隔,以浮點(diǎn)值存儲(chǔ)日期。浮點(diǎn)缺省日期存儲(chǔ)是 PostgreSQL8.4之前發(fā)布的,但它現(xiàn)在已經(jīng)過時(shí),因?yàn)樵?tt class="TYPE">timestamp值域的微秒精度方面,它不支持。 然而,基于整數(shù)日期時(shí)間的存儲(chǔ)需要64位的整數(shù)類型。因此,當(dāng)沒有這種類型可用或兼容為 PostgreSQL之前版本事先編寫的應(yīng)用程序時(shí),這個(gè)選項(xiàng)可以使用。 參閱 Section 8.5獲得更多詳細(xì)信息。
禁止按"by value"傳遞float4值,應(yīng)該通過"by reference"來傳遞。 此選項(xiàng)可估算性能,但可能需要與舊的用戶自定義函數(shù)(用C語言編寫并且是使用"version 0"來調(diào)用的約定)兼容。 一個(gè)更好的長(zhǎng)期解決方案是使用"version 1"調(diào)用約定來更新任何此類函數(shù)。
禁止按"by value"傳遞float8的值,應(yīng)該通過"by reference"來傳遞。 此選項(xiàng)可估算性能,但可能需要與舊的用戶自定義函數(shù)(用C語言編寫并且是使用"version 0"來調(diào)用的約定)兼容。 一個(gè)更好的長(zhǎng)期解決方案是使用"version 1"調(diào)用約定來更新任何此類函數(shù)。 注意:這個(gè)選項(xiàng)影響不僅float8,int8和一些相關(guān)的類型如時(shí)間戳等也會(huì)受影響。 在32位平臺(tái)上,缺省的是--disable-float8-byval,不允許選擇--enable-float8-byval。
設(shè)置段大?。╯egment size),以千兆字節(jié)為單位。大型表分為多個(gè)操作系統(tǒng)文件,每個(gè)大小等于段大小。 這就避免了存在許多平臺(tái)上文件大小限制問題。 默認(rèn)段大小為1千兆字節(jié),在所有支持平臺(tái)上都是安全的。 如果您的操作系統(tǒng)支持"largefile",那么您可以使用一個(gè)較大值的段大小。 這可能有助于減少運(yùn)行于大表中消耗的文件描述符數(shù), 但要小心,不要選擇比您的平臺(tái)支持的,并且你打算使用的文件系統(tǒng)大的值。 你想使用其他工具,如tar,還設(shè)置了可用文件大小限制。建議,但不是絕對(duì)需要,該值 是2的乘方。請(qǐng)注意,改變這個(gè)值需要一個(gè)initdb。
設(shè)置block size,以千字節(jié)為單位。這是表內(nèi) 存儲(chǔ)和I/O的單位。缺省值是8千字節(jié),適用于大多數(shù)情況,但其他值在特殊情況下也可能是有用的。 值必須是是在1和32之間的2的乘方,以千字節(jié)為單位。 請(qǐng)注意,改變這個(gè)值,需要一個(gè)initdb。
設(shè)置WAL segment size,以兆字節(jié)為單位。這是 WAL日志每一個(gè)獨(dú)立文件的大小??梢酝ㄟ^調(diào)整該值的大小來控制WAL日志傳送粒度。 該值必須是在1和64之間的2的乘方(兆字節(jié)為單位),缺省大小為16兆字節(jié)。 請(qǐng)注意,改變這個(gè)值,需要一個(gè)initdb。
設(shè)置WAL block size,以千字節(jié)為單位。這是WAL日志內(nèi) 存儲(chǔ)和I/O的單位。缺省情況值是8千字節(jié),適用于大多數(shù)情況,但其他值在特殊情況下也可能是有用的。 值必須是1和64之間的2的乘方(千字節(jié)為單位)。 請(qǐng)注意,改變這個(gè)值,需要一個(gè)initdb。
允許PostgreSQL在沒有該平臺(tái)的CPU自旋鎖支持的情況下編譯成功。 缺乏自旋鎖的支持將導(dǎo)致性能惡化,因此,只有在編譯過程中止,并且提示該平臺(tái)缺乏自旋鎖支持的時(shí)候才使用這個(gè)選項(xiàng)。 如果在你的平臺(tái)上需要這個(gè)選項(xiàng)才能編譯PostgreSQL,請(qǐng)向PostgreSQL開發(fā)者報(bào)告這個(gè)問題。
禁用客戶端庫(kù)的線程安全。該選項(xiàng)通過安全地控制他們私有的連接句柄來阻止在libpq 和 ECPG程序里的并發(fā)線程。
PostgreSQL包括它自己的時(shí)區(qū)數(shù)據(jù)庫(kù)(該庫(kù)需要時(shí)間和日期操作操作)。 這個(gè)時(shí)區(qū)數(shù)據(jù)庫(kù)實(shí)際上兼容由許多操作系統(tǒng)(如FFreeBSD, Linux,和Solaris)提供的"zoneinfo"時(shí)區(qū)數(shù)據(jù)庫(kù),因此不必重新安裝。 當(dāng)使用此選項(xiàng)時(shí),使用的是DIRECTORY中系統(tǒng)提供的時(shí)區(qū)數(shù)據(jù)庫(kù),而不是PostgreSQL的源代碼發(fā)布中的時(shí)區(qū)數(shù)據(jù)庫(kù)。 DIRECTORY必須聲明為絕對(duì)路徑。 在某些操作系統(tǒng)上,該目錄可能是/usr/share/zoneinfo。 請(qǐng)注意,安裝程序?qū)⒉粰z測(cè)不匹配或錯(cuò)誤的時(shí)區(qū)數(shù)據(jù)。 如果您使用此選項(xiàng),建議您運(yùn)行回歸測(cè)試來驗(yàn)證,指向正確運(yùn)行PostgreSQL的時(shí)間區(qū)域數(shù)據(jù)。
此選項(xiàng)主要是面向?qū)δ繕?biāo)操作系統(tǒng)很了解的二進(jìn)制包分發(fā)者。 使用該選項(xiàng)的最大好處是,無論何時(shí),當(dāng)本地夏令時(shí)規(guī)則發(fā)生改變時(shí),不需要?jiǎng)倮鸓ostgreSQL包。 另一個(gè)好處是,如果時(shí)區(qū)數(shù)據(jù)庫(kù)文件并不需要在安裝期間編譯, PostgreSQL可以更直接交叉編譯()。
避免使用Zlib庫(kù)。 這樣就關(guān)閉了pg_dump 和pg_restore里面的壓縮支持。 這個(gè)選項(xiàng)只適用于那些沒有這個(gè)庫(kù)的罕見的系統(tǒng)。
把所有程序和庫(kù)以帶有調(diào)試符號(hào)的方式編譯。 這意味著你可以通過一個(gè)調(diào)試器運(yùn)行程序來分析問題。 這樣做顯著增大了最后安裝的可執(zhí)行文件的大小,并且在非GCC的編譯器上,通常還要關(guān)閉編譯器優(yōu)化,導(dǎo)致速度下降。 但是,如果有這些符號(hào)表的話,就可以非常有效地幫助定位可能發(fā)生問題的位置。 目前,我們建議只有在使用GCC的情況下才在生產(chǎn)安裝中使用這個(gè)選項(xiàng)。 但是如果你正在進(jìn)行開發(fā)工作,或者正在使用beta版本,那么應(yīng)該一直開啟它。
If using GCC, all programs and libraries are compiled with code coverage testing instrumentation. When run, they generate files in the build directory with code coverage metrics. See Section 30.4 for more information. This option is for use only with GCC and when doing development work.
如果使用GCC編譯,所有的程序和庫(kù)被編譯成 代碼覆蓋測(cè)試儀器。運(yùn)行時(shí),他們 在代碼覆蓋度量的編譯庫(kù)中產(chǎn)生文件。See Section 30.4 for more information.此選項(xiàng)只與GCC一起使用并且是做開發(fā)工作中。
如果使用GCC,所有程序和庫(kù)都被編譯用以,這樣才能對(duì)其進(jìn)行分析。 在后臺(tái)出口,將創(chuàng)建一個(gè)子目錄(包含gmon.out文件)用于分析使用。 此選項(xiàng)只與GCC一起使用并且是做開發(fā)工作中。
打開在服務(wù)器中的assertion檢查,它會(huì)檢查許多"cannot happen"的條件。 它對(duì)于代碼開發(fā)的用途而言是無價(jià)之寶,不過這些測(cè)試會(huì)顯著減緩服務(wù)器。 并且,打開這個(gè)測(cè)試不會(huì)提高系統(tǒng)的穩(wěn)定性! 這些assertion檢查并不是按照錯(cuò)誤的嚴(yán)重性分類的, 因此一些相對(duì)無害的小問題也可能導(dǎo)致服務(wù)器重啟 (只要它觸發(fā)了一次assertion失敗)。 目前,我們不推薦在生產(chǎn)中使用這個(gè)選項(xiàng), 但是如果你在做開發(fā)或者在使用beta版本的時(shí)候應(yīng)該打開它。
打開自動(dòng)倚賴性跟蹤。 如果打開這個(gè)選項(xiàng), 那么makefile文件將設(shè)置為在任何頭文件被修改的時(shí)候都將重新編譯所有受影響的目標(biāo)文件。 如果你在做開發(fā)的工作,那么這個(gè)選項(xiàng)很有用,但是如果你只是想編譯一次并且安裝, 那這么做就是浪費(fèi)時(shí)間。目前,這個(gè)選項(xiàng)只有在你使用GCC的時(shí)候才管用。
編譯PostgreSQL,支持動(dòng)態(tài)跟蹤工具DTrace。 參閱See Section 27.4. 經(jīng)常需要通過設(shè)置DTRACE環(huán)境變量來指向dtrace程序。 因?yàn)?tt class="COMMAND">dtrace通常安裝在/usr/sbin中,而該目錄一般不在搜索路經(jīng)中。 可以通過環(huán)境變量DTRACEFLAGS來聲明dtrace程序的其他命令行選項(xiàng)。 在Solaris平臺(tái)上,要包含64位DTrace支持,需要指定DTRACEFLAGS="-64" , 比如,使用GCC編譯:
./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
在使用Sun編譯器的時(shí)候:
./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
如果你喜歡使用不同于configure找出來的C編譯器, 可以將環(huán)境變量CC設(shè)置為你選擇的程序。 缺省時(shí),configure將選擇gcc(只要可用), 或者是該平臺(tái)的缺省選擇(通常是cc),如果需要的話,你也可以用CFLAGS覆蓋缺省編譯器標(biāo)志。
你可以在configure命令行上聲明環(huán)境變量,比如:
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
下面是一些重要的環(huán)境變量列表:
Bison 程序
C編譯器命令
指向C編譯器的選項(xiàng)
C預(yù)處理器
指向C預(yù)處理器的選項(xiàng)
dtrace程序的位置
指向dtrace程序的選項(xiàng)
Flex 程序
連接可執(zhí)行文件或共享庫(kù)時(shí)可用的選項(xiàng)
僅用于連接可執(zhí)行文件的附加選項(xiàng)
僅連接共享庫(kù)的附加選項(xiàng)
為本地語言支持的msgfmt程序
Perl解釋器的完整路徑,用于確定編譯PL/Perl的依賴關(guān)系。
Python解釋器的完整路徑。用于確定編譯PL/Python的依賴關(guān)系。 在這里,需要指出的一點(diǎn)是,Python 2或3(或其他隱式選擇)可以決定哪種PL/Python的變種語言可用。 參閱 Section 42.1獲得更多詳細(xì)信息。
Tcl解釋器的完整路徑。用于確定編譯PL/Tcl的依賴關(guān)系, 并且,它將代替Tcl腳本。
xml2-config用于定位libxml的安裝。
編譯
要開始編譯,輸入:
gmake
(一定要記得用GNU make.) 依硬件不同,編譯過程需要的時(shí)間也不同。 顯示的最后一行應(yīng)該是:
All of PostgreSQL is successfully made. Ready to install.
如果你想編譯所有可以編譯的,包括 文檔(HTML和手冊(cè)頁(yè)),附加模塊 (contrib),輸入:
gmake world
顯示最后一行應(yīng)該是:
PostgreSQL, contrib and HTML documentation successfully made. Ready to install.
回歸測(cè)試
如果你想在安裝文件前測(cè)試新編譯的服務(wù)器,那么你可以在這個(gè)時(shí)候運(yùn)行回歸測(cè)試。 回歸測(cè)試是一個(gè)用于驗(yàn)證PostgreSQL在系統(tǒng)上是否按照開發(fā)人員設(shè)想的那樣運(yùn)行的測(cè)試套件 輸入:
gmake check
這條命令不能用root用戶執(zhí)行,需要以非特權(quán)用戶運(yùn)行該命令。 Chapter 30 contains 包含關(guān)于如何解釋測(cè)試結(jié)果的詳細(xì)信息。 你可以在以后的任何時(shí)間通過執(zhí)行這條命令來運(yùn)行這個(gè)測(cè)試。
安裝文件
Note: 如果你正在升級(jí)一套現(xiàn)有的系統(tǒng)并且準(zhǔn)備把新文件覆蓋在舊文件上面, 那么要記得在覆蓋之前備份數(shù)據(jù)并關(guān)閉舊服務(wù)器, 像之前在Section 15.4里面解釋的那樣。
要安裝PostgreSQL ,輸入:
gmake install
這條命令將把文件安裝到在step 1聲明的目錄里面去。 確保你對(duì)那個(gè)目錄有足夠的權(quán)限以寫入。 通常需要用root用戶(或有root權(quán)限的用戶)來執(zhí)行該命令, 當(dāng)然,也可以先創(chuàng)建目標(biāo)目錄,然后給該用戶分配足夠的,在該目錄上的權(quán)限。
文檔(HTML和手冊(cè)頁(yè))的安裝,輸入:
gmake install-docs
如果要安裝所有的可以安裝的,輸入:
gmake install-world
該命令也會(huì)安裝文檔文件。
用gmake install-strip命令代替gmake install命令, 可以在安裝可執(zhí)行文件和庫(kù)文件時(shí)把它們的調(diào)試信息抽取掉,這樣可以節(jié)約一些磁盤空間。 如果你編譯時(shí)帶著調(diào)試支持,那么該命令將刪除調(diào)試支持,因此我們應(yīng)該只是在不再需要調(diào)試的時(shí)候使用。 install-strip力圖做一些合理的事情來節(jié)約空間, 但是它并不知道如何從可執(zhí)行文件中抽取每個(gè)不需要的字節(jié), 因此,如果你希望節(jié)約所有可能節(jié)約的磁盤空間,那么你可以手工做些處理。
標(biāo)準(zhǔn)的安裝提供所有客戶端應(yīng)用開發(fā)和服務(wù)器端的程序開發(fā)的頭文件, 比如用C寫的通用函數(shù)或者數(shù)據(jù)類型的頭文件。(PostgreSQL8.0之前,后者需要一個(gè)單獨(dú)的gmake install-all-headers命令, 現(xiàn)在標(biāo)準(zhǔn)安裝中一包含了這一步。)
只安裝客戶端. 如果你只想裝客戶應(yīng)用和接口庫(kù),那么你可以用下面的命令:
gmake -C src/bin install gmake -C src/include install gmake -C src/interfaces install gmake -C doc install
src/bin中有一些僅供服務(wù)器使用的二進(jìn)制文件,但是它們都很小。
在Windows上注冊(cè)eventlog. 要在該操作系統(tǒng)上注冊(cè)一個(gè)Windows eventlog庫(kù), 在安裝完畢之后執(zhí)行下面的命令:
regsvr32 pgsql_library_directory/pgevent.dll
這樣就創(chuàng)建了一個(gè)用于事件查看器的注冊(cè)表項(xiàng)目。
卸載. 可以使用gmake uninstall命令進(jìn)行卸載,不過這樣不會(huì)刪除創(chuàng)建出來的目錄。
清理. 在安裝完成以后,可以通過在源碼樹里面用命令gmake clean刪除編譯過程文件來釋放磁盤空間。 這樣會(huì)保留configure程序生成的文件,這樣以后你就可以用gmake命令重新編譯所有東西。 要把源碼樹恢復(fù)為發(fā)布時(shí)的狀態(tài),用gmake distclean命令。 如果你想從同一棵源碼樹上為多個(gè)不同平臺(tái)編譯,你就一定要運(yùn)行這條命令并且為每個(gè)平臺(tái)重新配置。 另外,在每種系統(tǒng)上使用一套獨(dú)立的編譯樹,這樣源代碼樹就可以保留不被更改。
如果你執(zhí)行了一次編譯,然后發(fā)現(xiàn)你的configure選項(xiàng)是錯(cuò)誤的, 或者你修改了configure所探測(cè)到的東西(比如升級(jí)了軟件), 那么在重新配置和編譯之前運(yùn)行一下gmake distclean是個(gè)好習(xí)慣。 如果不做這個(gè)事情,你修改的配置選項(xiàng)可能無法生效。