閱讀539 返回首頁    go 阿裏雲 go 技術社區[雲棲]


PostgreSQL服務器管理:在Windows上從源代碼安裝

本文檔為PostgreSQL 9.6.0文檔,本轉載已得到原譯者彭煜瑋授權。

PostgreSQL可以使用來自微軟的Visual C++編譯器套件構建。這些編譯器可以來自於Visual Studio、Visual Studio Express或者Microsoft Windows SDK的某些版本。如果你還沒有準備好一個Visual Studio環境設置,最簡單的方式是使用Visual Studio Express 2013 for Windows Desktop中的編譯器,或者Windows SDK 7.1中的,兩者都可以從微軟免費下載。

使用微軟編譯器套件可以編譯得到 32 位和 64 位版本。32 位的 PostgreSQL 可以使用 Visual Studio 2005至 Visual Studio 2015(包括精簡版)編譯, 單獨的Windows SDK 6.0至7.1亦可。64位PostgreSQL的構建隻被 Microsoft Windows SDK版本6.0a至7.1或 Visual Studio 2008及以上版本支持。 使用Visual Studio 2005至 Visual Studio 2013編譯時最低支持 Windows XP和 Windows Server 2003。使用 Visual Studio 2015編譯時最低支持 Windows Vista和Windows Server 2008。

使用Visual C++或Platform SDK構建的工具在src/tools/msvc目錄中。在構建時,請確定在係統路徑中沒有來自於MinGW或的Cygwin工具。同樣,確保所有需要的Visual C++工具都在PATH中。在Visual Studio中,啟動Visual Studio Command Prompt。如果你希望構建一個64位版本,你必須使用64位版本的命令,反之亦然。在Microsoft Windows SDK中,啟動該SDK在啟動菜單中的CMD shell。在最近的SDK版本中你可以使用setenv命令改變目標CPU架構、構建類型以及目標OS,例如setenv /x86 /release /xp會設置為Windows XP或更高版本上的32位發布構建。使用/?來了解setenv的其他選項。所有命令應該從src\tools\msvc目錄運行。

在開始構建之前,你還需要編輯文件config.pl來反映任何你想改變的配置選項,或者要使用的任何第三方庫目錄。完整的配置在第一次讀取並解析文件config_default.pl時確定,然後應用config.pl中的任何改變。例如,要製定你的Python安裝的位置,將下麵的內容放在config.pl中:

$config->{python} = 'c:\python26';

你隻需要指定那些和config_default.pl中不同的參數即可。

如果你希望設置任何其他環境變量,可創建一個名為buildenv.pl的文件並將需要的命令放在其中。例如,要把不在PATH中的bison路徑加上,創建一個包含以下內容的文件:


$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';

1.1. 要求

構建PostgreSQL時需要下列附加產品。使用config.pl文件來指定這些庫所在的目錄。

Microsoft Windows SDK

如果你的構建環境中沒有一個受支持的Microsoft Windows SDK版本,推薦你升級到最新版(當前版本為7.1,可從https://www.microsoft.com/downloads/ 下載)。

你必須總是包括SDK中的Windows頭文件和庫部分。如果你安裝的是一個包括Visual C++ 編譯器的Windows SDK,構建時不需要Visual Studio。注意在版本8.0a,Windows SDK中不再包括一個完整的命令行構建環境。

ActiveState Perl

ActiveState Perl被用來運行構建生成腳本。MinGW或Cygwin Perl是不符合要求的。AcitveState Perl也必須存在於PATH中。其二進製文件可以從https://www.activestate.com 下載(注意:需要版本5.8及以上,免費標準發布就足夠了)。

下麵的附加產品在開始時並不要求,但是如果要構建完整的包就需要它們。使用config.pl文件來指定這些庫所在的目錄。

ActiveState TCL

用於構建PL/TCL(注意:要求版本8.4,免費標準發布即可)。

Bison和 Flex

Bison和Flex用來從Git構建,但使用發行文件構建時可以不要求。隻有Bison 1.875或2.2及以上才能正常工作。Flex則必須是版本2.5.31或以上。

Bison和Flex 都包括在msys工具套件中,它作為 MinGW編譯器套件的一部分可以從 https://www.mingw.org/wiki/MSYS 得到。

你將需要把包含flex.exe和bison.exe 的目錄加入到buildenv.pl中的PATH環境變量中, 除非它們已經存在於PATH中。在MinGW的情況下, 目錄將是MinGW安裝目錄的\msys\1.0\bin子目錄。

Note: 來自GnuWin32的Bison發布似乎有一個故障,它會導致Bison安裝於名稱中有空格的目錄時發生故障,例如英語安裝的默認位置C:\Program Files\GnuWin32。考慮將它安裝到C:\GnuWin32或者在PATH環境設置中使用NTFS段路徑名(例如C:\PROGRA~1\GnuWin32)。

Note:
在PostgreSQL的FTP站點上的以及被舊文檔引用的老式winflex二進製程序在64位Windows主機上會出現"flex: fatal internal error, exec failed"的錯誤。請使用來自 MSYS 的 Flex。

Diff

Diff是回歸測試所需要的,可以從https://gnuwin32.sourceforge.net 得到。

Gettext

Gettext用於NLS支持,可以從https://gnuwin32.sourceforge.net 得到。注意二進製程序、依賴文件以及開發者文件都需要。

MIT Kerberos

用於 GSSAPI 認證支持。MIT Kerberos可以從https://web.mit.edu/Kerberos/dist/index.html 下載。

libxml2 and libxslt

用於XML支持。二進製文件可以從https://zlatkovic.com/pub/libxml 得到,源代碼可以從https://xmlsoft.org得到。注意libxml2需要iconv,後者也可以在相同的下載位置得到。

openssl

用於SSL支持。二進製文件可以從https://www.slproweb.com/products/Win32OpenSSL.html 下載,源代碼可以從https://www.openssl.org下載。

ossp-uuid
用於UUID-OSSP支持(contrib only)。源代碼可以從https://www.ossp.org/pkg/lib/uuid/ 下載。

Python

用於構建PL/Python。二進製文件可以從https://www.python.org 下載。

zlib

用於pg_dump和pg_restore中的壓縮支持。二進製文件可以從https://www.zlib.net 下載。

1.2. 針對64位Windows的特殊考慮

在64位Windows上,PostgreSQL隻能為x64架構構建,因此無法支持安騰處理器。

不支持在同一個構建樹中混合32位和64位版本。構建係統會自動檢測它運行在32位還是64位環境中,然後相應地構建PostgreSQL。鑒於此,在構建前啟動正確的命令提示很重要。

要使用服務器端的第三方庫如python或openssl,該庫必須也是64位。在一個64位服務器上載入一個32位庫是不被支持的。PostgreSQL支持的一些第三方庫可能隻有32位版本,在這種情況下它們就不能被用於64位PostgreSQL。

1.3. 構建

要在發行配置中構建PostgreSQL的所有部分(默認),運行命令:


build

要在調試配置中構建PostgreSQL的所有部分,運行命令:


build DEBUG

要構建單獨一個對象,例如psql,運行命令:


build psql
build DEBUG psql

要將默認的構建配置改變成調試,將下麵的內容放在buildenv.pl文件中:


$ENV{CONFIG}="Debug";

也可以在Visual Studio的圖形界麵中進行構建。在這種情況下,你需要在命令提示符下運行:


perl mkvcbuild.pl

然後在Visual Studio中打開生成的pgsql.sln(在源代碼樹的根目錄中)。

1.4. 清理和安裝

在大部分時間裏,Visual Studio的自動依賴跟蹤會處理發生改變的文件。但是如果發生了大量的改變,你也許需要清理整個安裝。為此,隻要運行clean.bat命令,它將會自動清除所有生成的文件。你也可以使用dist參數運行它,這種情況下它的效果和make distclean一樣,並且會移除flex/bison的輸出文件。

默認情況下,所有的文件都被寫入到名為debug或release的子目錄中。要將這些文件以標準布局進行安裝並且生成初始化和使用數據庫所需的文件 ,運行命令:


install c:\destination\directory

如果你想隻安裝客戶端應用和接口庫,那麼你可以使用這些命令:


install c:\destination\directory client

1.5. 運行回歸測試

要運行回歸測試,確保你已經完成了所有所需部分的構建。另外,確保載入整個係統所需的DLL(例如Perl和Python過程語言所需的DLL)都在係統路徑中。如果它們不在路徑中,通過buildenv.pl文件設置。要運行測試,可以從src\tools\msvc目錄運行以下命令之一:


vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck
vcregress modulescheck
vcregress ecpgcheck
vcregress isolationcheck
vcregress bincheck
vcregress recoverycheck
vcregress upgradecheck

要更改使用的調度方式(默認為並行),在命令行後增加調度方式,如:


vcregress check serial

用vcregress bincheck和vcregress recoverycheck 分別可以運行客戶端程序上的回歸測試和恢複測試,這要求 安裝了額外的 Perl 模塊:


IPC::Run

從編寫這份文檔時起,IPC::Run沒有被包括在 ActiveState Perl 安裝或者 ActiveState Perl Package Manager (PPM) 庫中。要安裝,請從 CPAN (在 https://search.cpan.org/dist/IPC-Run/)下載 IPC-Run-.tar.gz源代碼歸檔並且解壓。 編輯buildenv.pl文件,並且增加一個 PERL5LIB 變量 指向解壓得到的歸檔中的lib子目錄。例如:


$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';

1.6. 構建文檔

構建HTML格式的PostgreSQL文檔需要一些工具和文件。為所有這些文件創建一個根目錄,然後將下麵列出的它們分別放在相應子目錄中。

OpenJade 1.3.1-2

https://sourceforge.net/projects/openjade/files/openjade/1.3.1/openjade-1_3_1-2-bin.zip/download 下載並解壓到openjade-1.3.1子目錄。

DocBook DTD 4.2

https://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip 下載並解壓到docbook子目錄。

DocBook DSSSL 1.79

https://sourceforge.net/projects/docbook/files/docbook-dsssl/1.79/docbook-dsssl-1.79.zip/download 下載並解壓到docbook-dsssl-1.79子目錄。

ISO字符實體

https://www.oasis-open.org/cover/ISOEnts.zip 下載並解壓到docbook子目錄。

編輯buildenv.pl文件,為根目錄的位置增加一個變量,例如:

$ENV{DOCROOT}='c:\docbook';

要構建文檔,運行命令builddoc.bat。注意這實際會運行構建兩次以生成索引。生成好的HTML文件將在doc\src\sgml中。

如果你需要一個具有不同調試/發行標記的版本,或者你需要一個靜態庫來鏈接到一個應用,使用Visual C++ 7.1-9.0或Borland C++構建libpq是唯一被推薦的方式。對於正常的使用,推薦用MinGW或Visual Studio或Windows SDK。

要使用Visual Studio 7.1或以上構建libpq客戶端庫,轉入到src目錄並輸入命令:


nmake /f win32.mak

要使用Visual Studio 8.0或以上構建64位版本的libpq,轉入到src目錄並輸入命令:


nmake /f win32.mak CPU=AMD64

要使用Borland C++構建libpq客戶端庫,轉入到src目錄並輸入命令:


make -N -DCFG=Release /f bcc32.mak

2.1. 生成的文件

下列文件將被構建:

interfaces\libpq\Release\libpq.dll

可動態鏈接的前端庫

interfaces\libpq\Release\libpqdll.lib

用於鏈接程序到libpq.dll的導入庫

interfaces\libpq\Release\libpq.lib

前端庫的靜態版本

通常你不需要安裝任何一個客戶端文件。你應該將libpq.dll文件放在你的可執行應用文件的同一目錄下。如非必要,不要將libpq.dll安裝到你的Windows、System或System32目錄中。如果該文件通過一個安裝程序安裝,則在安裝時會使用文件中包含的VERSIONINFO資源進行版本檢查, 以保證更新版本的庫不會被覆蓋。

如果你打算在這台機器上使用libpq進行開發,你還需要把源代碼樹中的src\include和src\interfaces\libpq子目錄加入到編譯器設置的include路徑中。

要使用該庫,你必須把libpqdll.lib文件加入到你的項目(在Visual C++中,隻需要在項目上單擊右鍵並選擇加入它)。

最後更新:2017-08-21 10:32:50

  上一篇:go  自動重啟網卡
  下一篇:go  硬盤健康狀態監測