如何编译 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 模块的编译工作。