通常情況下,現代的類 Unix 平臺都可以執行 PostgreSQL。在釋出時經過具體測試的平臺將在下面的 第 17.6 節中描述。
編譯 PostgreSQL 需要以下軟體包
GNU make 版本 3.81 或更高版本是必需的;其他 make 程式或更早的版本GNU make 版本將 不 工作。(GNU make 有時會以 gmake
的名稱安裝。)要測試GNU make,請輸入
make --version
或者,PostgreSQL 可以使用 Meson 構建。這是使用 Visual Studio 在 Windows 上構建 PostgreSQL 的唯一選項。對於其他平臺,使用 Meson 目前仍處於實驗階段。如果您選擇使用 Meson,則您不需要GNU make,但下面的其他要求仍然適用。
Meson 的最低要求版本是 0.54。
您需要一個ISO/ANSIC 編譯器(至少支援 C99)。推薦使用最新的 GCC 版本,但 PostgreSQL 已知可以在多種不同的供應商提供的編譯器上編譯。
除了 gzip 或 bzip2 之外,還需要 tar 來解壓原始碼分發包。
在編譯過程中以及執行一些測試套件時需要 Perl 5.14 或更高版本。(此要求獨立於編譯 PL/Perl 的要求;參見下文。)
預設使用GNU Readline 庫。它允許 psql(PostgreSQL 命令列 SQL 直譯器)記住您輸入的每個命令,並允許您使用箭頭鍵來回憶和編輯之前的命令。這非常有用,強烈推薦。如果您不想使用它,則必須向 configure
指定 --without-readline
選項。作為替代,您通常可以使用 BSD 許可的 libedit
庫,該庫最初是在 NetBSD 上開發的。libedit
庫與 GNU Readline 相容,如果在找不到 libreadline
時,或者將 --with-libedit-preferred
指定為 configure
的選項時,它將被使用。如果您使用的是基於包的 Linux 發行版,請注意,您需要 readline
和 readline-devel
包(如果您的發行版中它們是分開的)。
預設使用 zlib 壓縮庫。如果您不想使用它,則必須向 configure
指定 --without-zlib
選項。使用此選項將停用 pg_dump 和 pg_restore 中對壓縮歸檔的支援。
預設使用 ICU 庫。如果您不想使用它,則必須向 configure
指定 --without-icu
選項。使用此選項將停用對 ICU 排序規則功能的支援(參見 第 23.2 節)。
ICU 支援需要安裝 ICU4C 包。目前 ICU4C 的最低要求版本是 4.2。
預設情況下,將使用 pkg-config 來查詢所需的編譯選項。這支援 ICU4C 版本 4.6 及更高版本。對於舊版本,或者如果 pkg-config 不可用,則可以將變數 ICU_CFLAGS
和 ICU_LIBS
指定給 configure
,例如:
./configure ... ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
(如果 ICU4C 在編譯器的預設搜尋路徑中,您仍然需要指定非空字串以避免使用 pkg-config,例如 ICU_CFLAGS=' '
。)
以下包是可選的。在預設配置中它們不是必需的,但在啟用某些編譯選項時它們是必需的,如下所述
要編譯伺服器程式語言 PL/Perl,您需要一個完整的 Perl 安裝,包括 libperl
庫和標頭檔案。最低要求版本是 Perl 5.14。由於 PL/Perl 將是一個共享庫,因此在大多數平臺上 libperl
庫也必須是共享庫。Perl 的最新版本中這似乎是預設設定,但在早期版本中則不是,無論如何,這取決於安裝 Perl 的人員的選擇。configure
如果選擇了編譯 PL/Perl 但找不到共享的 libperl
,則會失敗。在這種情況下,您必須手動重新編譯和安裝 Perl 才能編譯 PL/Perl。在 Perl 的配置過程中,請請求一個共享庫。
如果您打算對 PL/Perl 進行 incidental 以外的使用,您應該確保 Perl 安裝是用 usemultiplicity
選項啟用的(perl -V
會顯示是否是這種情況)。
要編譯 PL/Python 伺服器程式語言,您需要一個帶有標頭檔案和 sysconfig 模組的 Python 安裝。最低支援版本是 Python 3.6.8。
由於 PL/Python 將是一個共享庫,因此在大多數平臺上 libpython
庫也必須是共享庫。預設情況下,從原始碼構建的 Python 安裝不是這種情況,但在許多作業系統發行版中都提供了共享庫。configure
如果選擇了編譯 PL/Python 但找不到共享的 libpython
,則會失敗。這可能意味著您需要安裝額外的軟體包或重新編譯(部分)您的 Python 安裝以提供此共享庫。從原始碼構建時,請使用 --enable-shared
標誌執行 Python 的 configure。
要編譯 PL/Tcl 過程語言,您當然需要一個 Tcl 安裝。最低要求版本是 Tcl 8.4。
要啟用本機語言支援(NLS),即,以非英語語言顯示程式訊息的能力,您需要一個 Gettext 的實現API。某些作業系統內建了此功能(例如 Linux、NetBSD、Solaris),對於其他系統,您可以從 https://www.gnu.org/software/gettext/ 下載附加包。如果您在GNUC 庫中使用 Gettext 實現,那麼您將另外需要 GNU Gettext 包用於某些實用程式。對於其他任何實現,您將不需要它。
如果您想支援加密的客戶端連線,則需要 OpenSSL。對於沒有 /dev/urandom
的平臺(Windows 除外),OpenSSL 也用於隨機數生成。最低要求版本是 1.1.1。
此外,使用 OpenSSL 相容層支援 LibreSSL。最低要求版本是 3.4(來自 OpenBSD 7.0 版本)。
如果您想支援使用這些服務的身份驗證,則需要 MIT Kerberos(用於 GSSAPI)、OpenLDAP 和/或 PAM。
您需要 Curl 來構建一個可選模組,該模組為客戶端應用程式實現了 OAuth 裝置授權流。
如果您想支援使用 LZ4 方法壓縮資料,則需要 LZ4;請參閱 default_toast_compression 和 wal_compression。
如果您想支援使用 Zstandard 方法壓縮資料,則需要 Zstandard;請參閱 wal_compression。最低要求版本是 1.4.0。
要編譯 PostgreSQL 文件,有單獨的要求集;請參閱 第 J.2 節。
如果您需要獲取一個GNU包,您可以在本地找到GNU映象站點(參見 https://www.gnu.org/prep/ftp 獲取列表)或在 ftp://ftp.gnu.org/gnu/。
如果您在文件中看到任何不正確的內容、與您的具體功能體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。