如何編譯 PostgreSQL 模組
在使用 ServBay 進行 PostgreSQL 開發時,您可能需要編譯和安裝額外的 PostgreSQL 模組,以擴展數據庫的功能。本文將介紹如何在 ServBay 環境中編譯 PostgreSQL 模組,具體包括編譯 postgis
和 pg_jieba
模組。
前提條件
在開始編譯 PostgreSQL 模組之前,請確保您已經完成了編譯環境的初始化。有關如何初始化編譯環境的詳細步驟,請參考文檔 使用 ServBay 進行二次編譯。
指定 PostgreSQL 版本的重要性
ServBay 附帶了多個 PostgreSQL 版本,在使用編譯工具進行編譯時,務必指定您所用的 PostgreSQL 版本和相關配置。這是因為不同版本的 PostgreSQL 可能有不同的配置和依賴,選擇正確的版本可以避免編譯錯誤和運行時問題。
本例子以 PostgreSQL 15
為例。
編譯 postgis 模組
postgis
模組是 PostgreSQL 的一個擴展,用於處理地理信息系統(GIS)數據。以下是編譯 postgis-3.4.2
模組的步驟:
步驟 1:下載源碼
首先,從 PostGIS 官方網站下載 postgis-3.4.2
模組的源碼包。
wget https://download.osgeo.org/postgis/source/postgis-3.4.2.tar.gz
步驟 2:解壓源碼包
解壓下載的源碼包。
tar zxvf postgis-3.4.2.tar.gz
cd postgis-3.4.2
2
步驟 3:配置編譯選項
配置編譯選項,指定 PostgreSQL 的配置路徑和其他參數。
./configure --prefix=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 --bindir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin --datarootdir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/share --with-protobufdir=${SERVBAY_BIN_PATH} --disable-nls --without-raster --without-topology --with-pgconfig=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config CFLAGS="${CFLAGS} -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" CXXFLAGS="${CXXFLAGS} -std=c++17 -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" LDFLAGS="${LDFLAGS} -L${SERVBAY_COMMON_LIB_PATH} -lxml2 -lz -lpthread -liconv -licui18n -licuuc -licudata -lm"
步驟 4:編譯和安裝
編譯並安裝 postgis-3.4.2
模組。
make -j ${CPU_NUMBER}
make install
2
步驟 5:驗證模組加載
通過 PostgreSQL 命令行工具驗證 postgis
模組是否成功加載:
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION postgis;"
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT PostGIS_Version();"
2
如果模組已成功加載,您應該會看到 PostGIS
的版本信息。
編譯 pg_jieba 模組
pg_jieba
模組是 PostgreSQL 的一個擴展,用於中文分詞。以下是編譯 pg_jieba
模組的步驟:
步驟 1:獲取源碼
首先,從 GitHub 克隆 pg_jieba
模組的源碼庫。
git clone https://github.com/jaiminpan/pg_jieba.git
cd pg_jieba
git submodule update --init --recursive
2
3
步驟 2:配置編譯選項
配置編譯選項,指定 PostgreSQL 的配置路徑和其他參數。
cmake -S . -B builddir -DCMAKE_PREFIX_PATH=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 -DCMAKE_OSX_DEPLOYMENT_TARGET=${BUILD_OS_MIN_VERSION} -DCMAKE_OSX_ARCHITECTURES=${BUILD_CPU_ARCH_CMAKE}
步驟 3:編譯和安裝
編譯並安裝 pg_jieba
模組。
cmake --build builddir -j ${CPU_NUMBER}
cmake --install builddir
2
步驟 4:驗證模組加載
通過 PostgreSQL 命令行工具驗證 pg_jieba
模組是否成功加載:
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION pg_jieba;"
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT * FROM pg_available_extensions WHERE name = 'pg_jieba';"
2
如果模組已成功加載,您應該會看到 pg_jieba
的相關信息。
總結
通過上述步驟,您可以在 ServBay 環境中編譯和安裝所需的 PostgreSQL 模組。在編譯過程中,務必指定正確的 PostgreSQL 版本和相關配置,以確保模組與您的數據庫環境兼容。希望本文能幫助您順利完成 PostgreSQL 模組的編譯工作。