2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前18)/ 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

17.7. 特定平臺說明 #

本節介紹有關 PostgreSQL 安裝和配置的其他平臺特定問題。請務必閱讀安裝說明,特別是第 17.1 節。另外,請參閱第 31 章,瞭解迴歸測試結果的解釋。

此處未涵蓋的平臺沒有已知的特定平臺安裝問題。

17.7.1. Cygwin #

可以使用 Cygwin(Windows 上的類 Linux 環境)來構建 PostgreSQL,但該方法不如原生 Windows 構建,並且不再推薦在 Cygwin 下執行伺服器。

從原始碼構建時,請按照類 Unix 的安裝過程進行(即 ./configure; make;等),注意以下 Cygwin 特有的差異:

  • 在 Windows 實用程式之前設定您的路徑,使其使用 Cygwin 的 bin 目錄。這有助於避免編譯問題。

  • 不支援 adduser 命令;請使用 Windows 上相應的使用者管理應用程式。否則,請跳過此步驟。

  • 不支援 su 命令;請使用 ssh 在 Windows 上模擬 su。否則,請跳過此步驟。

  • OpenSSL 不受支援。

  • 啟動 cygserver 以支援共享記憶體。為此,請輸入命令 /usr/sbin/cygserver &。每次啟動 PostgreSQL 伺服器或初始化資料庫叢集(initdb)時,此程式都需要執行。預設的 cygserver 配置可能需要更改(例如,增加 SEMMNS),以防止 PostgreSQL 因缺少系統資源而失敗。

  • 在某些使用非 C 區域設定的系統上,構建可能會失敗。要解決此問題,請在構建之前透過執行 export LANG=C.utf8 將區域設定設定為 C,然後在安裝 PostgreSQL 後將其恢復為之前的設定。

  • 並行迴歸測試(make check)可能會由於 listen() 積壓佇列溢位而產生錯誤的迴歸測試失敗,這會導致連線被拒絕錯誤或掛起。您可以使用 make 變數 MAX_CONNECTIONS 來限制連線數,如下所示:

    make MAX_CONNECTIONS=5 check
    

    (在某些系統上,您最多可以同時建立約 10 個連線。)

可以將 cygserver 和 PostgreSQL 伺服器安裝為 Windows NT 服務。有關如何執行此操作的資訊,請參閱 Cygwin 上 PostgreSQL 二進位制包中包含的 README 文件。它安裝在 /usr/share/doc/Cygwin 目錄中。

17.7.2. macOS #

要在 macOS 上從原始碼構建 PostgreSQL,您需要安裝 Apple 的命令列開發工具,可以透過發出以下命令來完成:

xcode-select --install

(請注意,這將彈出一個 GUI 對話方塊以進行確認)。您可能希望安裝 Xcode,也可能不希望。

在最近的 macOS 版本中,有必要在用於查詢某些系統標頭檔案的 include 開關中嵌入“sysroot”路徑。這會導致 configure 指令碼的輸出根據 configure 期間使用的 SDK 版本而變化。在簡單場景下,這不會造成任何問題,但如果您嘗試在與伺服器程式碼構建不同的機器上構建擴充套件,則可能需要強制使用不同的 sysroot 路徑。為此,請設定 PG_SYSROOT,例如:

make PG_SYSROOT=/desired/path all

要找出您機器上的適當路徑,請執行:

xcrun --show-sdk-path

請注意,使用與核心伺服器構建時不同的 sysroot 版本構建擴充套件不被強烈推薦;在最壞的情況下,這可能會導致難以除錯的 ABI 不一致。

您也可以在配置時選擇非預設 sysroot 路徑,方法是將 PG_SYSROOT 指定給 configure

./configure ... PG_SYSROOT=/desired/path

這主要用於交叉編譯到其他 macOS 版本。不能保證生成的可執行檔案將在當前主機上執行。

要完全停用 -isysroot 選項,請使用:

./configure ... PG_SYSROOT=none

(任何不存在的路徑名都可以。)這在您希望使用非 Apple 編譯器進行構建時可能很有用,但請注意,PostgreSQL 開發人員不會測試或支援這種情況。

macOS 的“系統完整性保護”(SIP)功能會破壞 make check,因為它阻止將 DYLD_LIBRARY_PATH 的必需設定傳遞給正在測試的可執行檔案。您可以透過在 make check 之前執行 make install 來解決此問題。不過,大多數 PostgreSQL 開發人員都會關閉 SIP。

17.7.3. MinGW #

可以使用 MinGW(Windows 上的類 Unix 構建環境)來構建 Windows 版 PostgreSQL。建議使用 MSYS2 環境進行此操作,並安裝任何必需的軟體包。

17.7.3.1. 收集崩潰轉儲 #

如果 Windows 上的 PostgreSQL 崩潰,它能夠生成 minidumps,這些轉儲可用於追蹤崩潰原因,類似於 Unix 上的核心轉儲。這些轉儲可以使用 Windows Debugger ToolsVisual Studio 讀取。要啟用 Windows 上的轉儲生成,請在叢集資料目錄中建立一個名為 crashdumps 的子目錄。然後,轉儲將寫入此目錄,檔名唯一,基於崩潰程序的識別符號和崩潰時的當前時間。

17.7.4. Solaris #

PostgreSQL 在 Solaris 上得到了很好的支援。您的作業系統越新,遇到的問題就越少。

17.7.4.1. 必需的工具 #

您可以使用 GCC 或 Sun 的編譯器套件進行構建。為了獲得更好的程式碼最佳化,強烈建議在 SPARC 架構上使用 Sun 的編譯器。如果您使用 Sun 的編譯器,請注意不要選擇 /usr/ucb/cc;請使用 /opt/SUNWspro/bin/cc

您可以從 https://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/ 下載 Sun Studio。許多 GNU 工具已整合到 Solaris 10 中,或者存在於 Solaris 伴侶 CD 上。如果您需要舊版 Solaris 的軟體包,可以在 http://www.sunfreeware.com 找到這些工具。如果您偏好原始碼,請檢視 https://www.gnu.org/prep/ftp

17.7.4.2. configure 抱怨測試程式失敗 #

如果 configure 抱怨測試程式失敗,這很可能是執行時連結器無法找到某個庫,可能是 libz、libreadline 或其他非標準庫(如 libssl)。要將其指向正確的位置,請在 configure 命令列的 LDFLAGS 環境變數中進行設定,例如:

configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"

有關更多資訊,請參閱 ld 手冊頁。

17.7.4.3. 編譯以獲得最佳效能 #

在 SPARC 架構上,強烈建議使用 Sun Studio 進行編譯。嘗試使用 -xO5 最佳化標誌來生成顯著更快的二進位制檔案。不要使用任何會修改浮點運算和 errno 處理行為的標誌(例如 -fast)。

如果您沒有理由在 SPARC 上使用 64 位二進位制檔案,請優先選擇 32 位版本。64 位操作速度較慢,64 位二進位制檔案比 32 位變體速度慢。另一方面,AMD64 CPU 系列上的 32 位程式碼不是原生支援的,因此在該 CPU 系列上 32 位程式碼速度明顯較慢。

17.7.4.4. 使用 DTrace 跟蹤 PostgreSQL #

是的,可以使用 DTrace。有關詳細資訊,請參閱第 27.5 節

如果您看到 postgres 可執行檔案的連結中止,並出現類似以下內容的錯誤訊息:

Undefined                       first referenced
 symbol                             in file
AbortTransaction                    utils/probes.o
CommitTransaction                   utils/probes.o
ld: fatal: Symbol referencing errors. No output written to postgres
collect2: ld returned 1 exit status
make: *** [postgres] Error 1

您的 DTrace 安裝太舊,無法處理靜態函式中的探針。您需要 Solaris 10u4 或更高版本才能使用 DTrace。

17.7.5. Visual Studio #

建議大多數使用者下載 Windows 的二進位制發行版,該發行版在 PostgreSQL 網站 https://postgres.tw/download/ 上提供圖形安裝程式包。從原始碼構建僅適用於開發 PostgreSQL 或擴充套件的人員。

可以使用 Meson 構建 Windows 版 PostgreSQL(如第 17.4 節中所述)。原生 Windows 移植需要 Windows 10 或更高版本的 32 位或 64 位版本。

原生構建的 psql 不支援命令列編輯。Cygwin 構建支援命令列編輯,因此應在需要 psqlWindows 上進行互動式使用時使用它。

可以使用 Microsoft 的 Visual C++ 編譯器套件構建 PostgreSQL。這些編譯器可以來自 Visual StudioVisual Studio Express 或某些版本的 Microsoft Windows SDK。如果您還沒有設定 Visual Studio 環境,最簡單的方法是使用 Visual Studio 2022 中的編譯器或 Windows SDK 10 中的編譯器,它們都可以從 Microsoft 免費下載。

使用 Microsoft 編譯器套件可以進行 32 位和 64 位構建。使用 Visual Studio 2015Visual Studio 2022 以及獨立的 Windows SDK 版本 10 及更高版本可以構建 32 位 PostgreSQL。使用 Microsoft Windows SDK 版本 10 及更高版本或 Visual Studio 2015 及更高版本支援 64 位 PostgreSQL 構建。

如果您的構建環境沒有附帶受支援的 Microsoft Windows SDK 版本,建議您升級到最新版本(目前是版本 10),可從 https://www.microsoft.com/download 下載。

您必須始終包含 SDK 的“Windows Headers and Libraries”部分。如果您安裝的 Windows SDK 包含“Visual C++ Compilers”,則不需要 Visual Studio 即可構建。請注意,從 8.0a 版本開始,Windows SDK 不再附帶完整的命令列構建環境。

17.7.5.1. 要求 #

要在 Windows 上構建 PostgreSQL,還需要以下附加產品:

Strawberry Perl

執行構建生成指令碼需要 Strawberry Perl。MinGW 或 Cygwin Perl 不可用。它還必須在 PATH 中。可以從 https://strawberryperl.com 下載二進位制檔案。

BisonFlex

可以從 https://github.com/lexxmark/winflexbison 下載 BisonFlex 的二進位制檔案。

以下附加產品不是入門所必需的,但構建完整包是必需的:

Magicsplat Tcl

構建 PL/Tcl 所需。可以從 https://www.magicsplat.com/tcl-installer/index.html 下載二進位制檔案。

Diff

執行迴歸測試需要 Diff,可以從 http://gnuwin32.sourceforge.net 下載。

Gettext

構建 NLS 支援需要 Gettext,可以從 http://gnuwin32.sourceforge.net 下載。請注意,需要二進位制檔案、依賴項和開發檔案。

MIT Kerberos

GSSAPI 身份驗證支援所需。MIT Kerberos 可從 https://web.mit.edu/Kerberos/dist/index.html 下載。

libxml2libxslt

XML 支援所需。可以從 https://zlatkovic.com/pub/libxml 下載二進位制檔案,或從 http://xmlsoft.org 下載原始碼。請注意,libxml2 需要 iconv,後者可在同一下載位置獲得。

LZ4

支援 LZ4 壓縮所需。可以從 https://github.com/lz4/lz4/releases 下載二進位制檔案和原始碼。

Zstandard

支援 Zstandard 壓縮所需。可以從 https://github.com/facebook/zstd/releases 下載二進位制檔案和原始碼。

OpenSSL

SSL 支援所需。可以從 https://slproweb.com/products/Win32OpenSSL.html 下載二進位制檔案,或從 https://www.openssl.org 下載原始碼。

ossp-uuid

UUID-OSSP 支援(僅限 contrib)所需。原始碼可從 http://www.ossp.org/pkg/lib/uuid/ 下載。

Python

構建 PL/Python 所需。可以從 https://python.club.tw 下載二進位制檔案。

zlib

pg_dumppg_restore 中的壓縮支援所需。可以從 https://www.zlib.net 下載二進位制檔案。

17.7.5.2. 64 位 Windows 的特別注意事項 #

PostgreSQL 僅支援在 64 位 Windows 上構建 x64 架構。

不支援在同一個構建樹中混合 32 位和 64 位版本。構建系統會自動檢測其是在 32 位還是 64 位環境中執行,並相應地構建 PostgreSQL。因此,在構建之前啟動正確的命令提示符非常重要。

要使用伺服器端的第三方庫(如 PythonOpenSSL),該庫必須也是 64 位。不支援在 64 位伺服器中載入 32 位庫。PostgreSQL 支援的幾個第三方庫可能僅提供 32 位版本,在這種情況下,它們不能與 64 位 PostgreSQL 一起使用。

17.7.5.3. 收集崩潰轉儲 #

如果 Windows 上的 PostgreSQL 崩潰,它能夠生成 minidumps,這些轉儲可用於追蹤崩潰原因,類似於 Unix 上的核心轉儲。這些轉儲可以使用 Windows Debugger ToolsVisual Studio 讀取。要啟用 Windows 上的轉儲生成,請在叢集資料目錄中建立一個名為 crashdumps 的子目錄。然後,轉儲將寫入此目錄,檔名唯一,基於崩潰程序的識別符號和崩潰時的當前時間。

提交更正

如果您在文件中發現任何不正確之處、與您實際體驗不符或需要進一步澄清的內容,請使用此表格報告文件問題。