| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 14. 安裝教學 | Fast Forward | Next |
配置
安裝過程的第一步就是配置原始碼樹並選擇您喜歡的選項。 這個工作是透過執行 configure 腳本實現的,對於預設安裝,您只需要簡單地敲入
./configure
該腳本將執行一些測試來猜測一些系統相關的變量, 並檢測您的操作系統的特殊設置,並且最後將在制做樹中建立一些文件以記錄它找到了什麼。 (如果您想保持製作目錄的獨立,那麼您也可以在原始碼樹外面的目錄裡執行 configure。)
預設設置將製作伺服器和應用程序,還有所有只需要 C 編譯器的客戶端程序和接口。 預設時所有文件都將安裝到 /usr/local/pgsql。
您可以透過給出下面的 configure 命令行選項中的一個或更多的選項來客戶化製作和安裝過程:
把所有文件裝在目錄 PREFIX下面而不是 /usr/local/pgsql裡。 實際的文件會安裝到不同的子目錄裡;甚至沒有一個文件會直接安裝到 PREFIX 目錄裡。
如果您有特殊需要,您還可以用下面的選項客戶化不同的子目錄的位置。 不過,如果您把這些設置保留預設,那麼安裝將是可重定位的,意思是您可以在安裝過後移動目錄。 (man 和 doc 位置不受這個影響。)
對於可重定位的安裝,您可能需要使用 configure 的 --disable-rpath 選項。 還有,您需要告訴操作系統如何找到共享庫。
您可以把體系相關的文件安裝到一個不同的位置, EXEC-PREFIX,而不是 PREFIX 設置的地方。 這樣做可以比較方便地在不同主機之間共享體系相關的文件。 如果您省略這些,那麼EXEC-PREFIX 就會被設置為等於 PREFIX 並且體系相關和體系無關的文件都會安裝到同一棵目錄樹下,這也可能是您想要的。
為可執行程序聲明目錄,預設是 EXEC-PREFIX/bin, 通常也就是 /usr/local/pgsql/bin。
設置所安裝的程序需要的只讀文件的目錄。預設是 PREFIX/share。 請注意這個目錄和您放資料庫文件的地方沒有任何關係。
用於各種各樣配置文件的目錄,預設為 PREFIX/etc。
庫文件和動態裝載模塊的目錄。預設是 EXEC-PREFIX/lib。
C 和 C++ 頭文件的目錄。預設是 PREFIX/include。
隨著 PostgreSQL 一起帶的手冊頁將安裝到這個目錄。在它們相應的 manx子目錄裡。 預設是 PREFIX/man。
除"man(手冊頁)"以外的文件文件將被安裝到這個目錄。預設是 PREFIX/doc。 如果聲明了 --without-docdir,那麼文件將不會被 make install 安裝。 這是給那些使用特殊方法安裝文件的打包腳本使用的。
注意: 為了讓PostgreSQL能夠安裝在一些共享的安裝位置(比如 /usr/local/include), 同時又不至於和系統其它部分產生名字空間干擾,我們採取了一些步驟。 首先,安裝腳本會自動給 datadir, sysconfdir,和 docdir 後面附加上 "/postgresql" 字串, 除非展開的完整路徑名已經包含字串 "postgres" 或者 "pgsql"。 比如,如果您選擇 /usr/local 作為前綴, 那麼文件將安裝在 /usr/local/doc/postgresql, 但如果前綴是 /opt/postgres, 那麼它將被放到 /opt/postgres/doc。 客戶接口的公共 C 頭文件安裝到了 includedir,並且是名字空間無關的。 內部的頭文件和伺服器頭文件都安裝到 includedir/postgresql 下的私有目錄中去了。參考每種接口的文件獲取關於如何得到頭文件的訊息。 最後,如果合適,那麼也會建立一個私有的子目錄,在 libdir下,用於動態裝載可裝載的模塊。
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄將被加入編譯器的頭文件搜索列資料表中。 如果您有一些可選的包(比如 GNU Readline)安裝在非標準位置, 您就必須使用這個選項,以及可能還有相應的 --with-libraries 選項。
例子:--with-includes=/opt/gnu/include:/usr/sup/include。
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄是用於查找庫文件的。 如果您有一些包安裝在非標準位置,您可能就需要使用這個選項(以及對應的--with-includes選項)。
例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib。
打開本地語言支援(NLS),也就是以非英文顯示程序的訊息的能力。 LANGUAGES 是一個空格分隔的語言代碼列資料表, 標識您想支援的語言。比如 --enable-nls='de fr'。 (您提供的列資料表和實際支援的列資料表之間的交集將會自動計算出來。)如果您沒有聲明一個列資料表,那麼就安裝所有可用的翻譯。
要使用這個選項,您需要一個gettext API 的實現。見上文。
把 NUMBER 設置為伺服器和客戶端的預設連接埠。預設是 5432。 這個連接埠可以在以後設置,不過如果您在這裡聲明,那麼伺服器和客戶端將有相同的編譯好了的預設值。這樣會方便些。 通常選取一個非預設值的好理由是您企圖在同一台機器上執行多個 PostgreSQL 伺服器。
製作 PL/Perl 伺服器端編程語言。
製作 PL/Python 伺服器端編程語言。
製作伺服器編程語言 PL/Tcl。
Tcl 的安裝文件 tclConfig.sh, 她們裡面包含製作 Tcl 模塊的配置訊息。 Configure 通常會自動在她們的著名的位置找到這些文件, 但是如果您需要一個不同版本的 Tcl,您也可以聲明可以找到她們的目錄。
製作支援Kerberos認證的東西。您可以選擇 Kerberos 版本 4 或 5 之一,但不能同時選兩個。 DIRECTORY 參數聲明 Kerberos 安裝的根目錄;預設假設是 /usr/athena 如果相關的頭文件和庫文件不在常用的父目錄,那麼您必須使用附加的 --with-includes 和 --with-libraries選項。 configure 在繼續配置之前將檢查所需要的頭文件和庫,以確保您的 Kerberos 是足夠的
Kerberos 服務主的名稱。 預設是 postgres。通常沒有理由改變這個值。
製作支援 SSL (加密的)連線。 這個選項需要安裝 OpenSSL 包。 configure 將在安裝之前檢查所需要的頭文件和庫文件以確信您的 OpenSSL 安裝是充分的。
製作 PAM (可插拔認證模塊)支援。
避免使用Readline庫。這樣就關閉了 psql 裡的命令行編輯和歷史, 因此我們不建議這麼做。
製作 Rendezvous 支援。這要求您的操作系統支援 Rendezvous。 在 Mac OS X 上建議使用。
允許在 PostgreSQL 沒有該平台的 CPU 自旋鎖支援的情況下製作成功。 缺乏自旋鎖的支援將導致性能惡化;因此,只有在製作過程退出, 並且告訴您說該平台缺乏自旋鎖支援的時候才使用這個選項。 如果在您的平台上需要這個選項才能製作 PostgreSQL, 請向 PostgreSQL 開發者報告這個問題。
令客戶端庫是線程安全的。這樣就允許在 libpq 和 ECPG 程序裡的並發線程安全地控制他們私有的連接句柄。 這個選項要求您的操作系統上有足夠的線程支援。
避免使用Zlib庫。這樣就關閉了 pg_dump 和 pg_restore 裡面的壓縮支援。這個選項只適用於那些沒有這個庫的罕見的系統。
把所有程序和庫以帶有調試符號的方式編譯。 這意味著您可以透過一個調試器執行程序來分析問題。 這樣做顯著增大了最後安裝的可執行文件的大小, 並且在非 GCC 的編譯器上,這麼做通常還要關閉編譯器優化, 導致速度的下降。但是,如果有這些符號資料表的話,就可以非常有效地幫助定位可能發生問題的位置。 目前,我們只是在您使用 GCC 的情況下才建議在生產安裝中使用這個選項。 但是如果您正在進行開發工作,或者正在使用 beta 版本,那麼您就總應該打開它。
打開在伺服器中的 assertion 檢查, 它會檢查許多"不可能發生"的條件。它對於代碼開發的用途而言是無價之寶, 不過這些測試稍微地減慢了一些速度。並且,打開這個測試不會提高您的系統的穩定性! 這些斷言檢查並不是按照錯誤的嚴重性分類的,因此一些相對無害的小蟲子也可能導致伺服器重啟--只要它觸發了一次斷言失敗。 目前,我們不推薦在生產環境中使用這個選項,但是如果您在做開發或者在使用 beta 版本的時候應該打開它。
打開自動倚賴性跟蹤。如果打開這個選項,那麼製作文件(makefile)將設置為在任何頭文件被修改的時候都將重新製作所有受影響的目標文件。 如果您在做開發的工作,那麼這個選項很有用,但是如果您只是想編譯一次並且安裝,那麼這就是浪費時間。 目前,這個選項只有在您使用 GCC 的時候才管用。
如果您喜歡用那些和 configure 找出來的不同的 C 編譯器,那麼您可以您的環境變量 CC 設置為您選擇的程序。預設時,configure 將選擇 gcc,只要是可用的, 或者是該平台的預設(通常是 cc)。 除非著在該平台上不合適。類似地,您可以用 CFLAGS 變量覆蓋預設編譯器標誌。
您可以在 configure 命令行上聲明環境變量, 比如:
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
製作
開始製作,敲入
gmake
(一定要記得用 GNU make。) 依您的硬件而異,製作過程可能需要 5 分鐘到半小時。顯示的最後一行應該是
All of PostgreSQL is successfully made. Ready to install.
回歸測試
如果您想在安裝文件前測試新製作的伺服器, 那麼您可以在這個時候執行回歸測試。 回歸測試是一個用於驗證PostgreSQL在您的系統上是否按照開發人員設想的那樣執行的測試套件。 敲入
gmake check
(這條命令在 root 裡無法使用;請在非特權用戶下執行該命令。) 很有可能有些測試因為錯誤訊息的用語或浮點結果的問題而失敗。文件 Chapter 26 包含關於如何解釋測試結果的詳細訊息。 您可以在以後的任何時間透過執行這條命令來執行這個測試。
安裝文件
注意: 如果您正在升級一套現有的系統並且準備把新文件安裝在舊文件上面, 那麼要記得在覆蓋之前備份資料並關閉您的舊伺服器,像上面Section 14.4裡面解釋的那樣。
要安裝 PostgreSQL 鍵入
gmake install
這條命令將把文件安裝到在 step 1 裡聲明的目錄裡面去。 確保您對那個目錄有足夠的權限。通常您需要用 root 權限做這一步。 或者您也可以事先建立目標目錄並且分派合適的權限。
您可以使用 gmake install-strip 代替 gmake install, 在安裝可執行文件和庫文件時把它們的調試訊息抽取掉。 這樣將節約一些空間。如果您編譯時帶著調試支援,那麼抽取將有效地刪除調試支援, 因此我們應該只是在不再需要調試的時候做這些事情。 install-strip 力圖做一些合理的事情來節約空間, 但是它並不知道如何從可執行文件中抽取每個不需要的字元, 因此,如果您希望節約所有可能節約的磁盤空間,那麼您可能需要手工做些處理。
標準的安裝只提供所有開發客戶端應用的頭文件和伺服器端的程序開發,比如用 C 寫客戶函數或者資料類型,的頭文件。 (在 PostgreSQL 8.0 之前,後者需要獨立地執行一次 gmake install-all-headers 命令,不過現在這個步驟已經融合到了標準的安裝步驟裡面去了。)
只裝客戶端:. 如果您只想裝客戶應用和接口,那麼您可以用下面的命令:
gmake -C src/bin install gmake -C src/include install gmake -C src/interfaces install gmake -C doc install
在 Windows 上註冊 eventlog: . 要在該操作系統上註冊一個 Windows eventlog 庫, 在安裝完畢之後執行下面的命令:
regsvr32 pgsql_library_directory/pgevent.dll
這樣就建立了一個用於事件查看器的註冊資料表項目。
卸載:. 要撤銷安裝可以使用命令 gmake uninstall。不過這樣不會刪除任何建立出來的目錄。
清理:. 在安裝完成以後,您可以透過在源碼樹裡面用命令gmake clean 刪除製作文件。 這樣會保留configure程序生成的文件,這樣以後您就可以用 gmake 命令重新製作所有東西。 要把源碼樹恢復為發佈時的狀態,用 gmake distclean 命令。 如果您想從同一棵源碼樹上為多個不同平台製作,您就一定要執行這條命令並且為每個製作重新配置。 (另外,在每種系統上使用一套獨立的製作樹,這樣原始碼樹就可以保留不被更改。)
如果您執行了一次製作,然後發現您的配置選項是錯誤的, 或者您修改了任何configure所探測的東西(比如,升級了軟件), 那麼在重新配置和製作之前執行一下 gmake distclean 是個好習慣。 如果不做這個事情, 您修改的配置選項可能無法傳播到所有需要變化的地方。