PostgreSQL モジュールのコンパイル方法
ServBay を使用して PostgreSQL 開発を行う際に、データベースの機能を拡張するために、追加の PostgreSQL モジュールをコンパイルおよびインストールする必要がある場合があります。この記事では、ServBay 環境で PostgreSQL モジュールをコンパイルする方法を紹介します。具体的には postgis
と pg_jieba
モジュールのコンパイル方法を説明します。
前提条件
PostgreSQL モジュールをコンパイルする前に、コンパイル環境の初期化を完了していることを確認してください。コンパイル環境の初期化方法については、ドキュメントServBay を使用した二次コンパイルを参照してください。
PostgreSQL バージョンの指定の重要性
ServBay には複数の PostgreSQL バージョンが含まれており、コンパイルツールを使用してコンパイルする際には、使用する PostgreSQL バージョンと関連する設定を指定することが重要です。異なるバージョンの PostgreSQL では設定や依存関係が異なる場合があるため、正しいバージョンを選択することでコンパイルエラーや実行時の問題を回避できます。
今回は PostgreSQL 15
を例に挙げて説明します。
postgis モジュールのコンパイル
postgis
モジュールは、地理情報システム(GIS)データを処理するための PostgreSQL 拡張機能です。以下は 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 モジュールのコンパイル作業を順調に進める一助となれば幸いです。