Hướng dẫn biên dịch module PostgreSQL
Trong quá trình phát triển PostgreSQL với ServBay, bạn có thể cần biên dịch và cài đặt các module PostgreSQL bổ sung để mở rộng chức năng của cơ sở dữ liệu. Bài viết này sẽ hướng dẫn cách biên dịch các module PostgreSQL trong môi trường ServBay, bao gồm các module postgis
và pg_jieba
.
Điều kiện tiên quyết
Trước khi bắt đầu biên dịch module PostgreSQL, hãy đảm bảo bạn đã hoàn tất việc khởi tạo môi trường biên dịch. Chi tiết về cách khởi tạo môi trường biên dịch có thể tham khảo trong tài liệu Sử dụng ServBay để biên dịch lại.
Tầm quan trọng của việc chỉ định phiên bản PostgreSQL
ServBay đi kèm với nhiều phiên bản PostgreSQL. Khi sử dụng công cụ biên dịch, bạn phải chỉ định phiên bản PostgreSQL và các cấu hình liên quan mà bạn đang sử dụng. Điều này là do các phiên bản khác nhau của PostgreSQL có thể có các cấu hình và phụ thuộc khác nhau. Việc chọn đúng phiên bản sẽ giúp tránh các lỗi biên dịch và vấn đề khi chạy.
Ví dụ này sẽ sử dụng PostgreSQL 15
.
Biên dịch module postgis
Module postgis
là một phần mở rộng của PostgreSQL để xử lý dữ liệu hệ thống thông tin địa lý (GIS). Dưới đây là các bước để biên dịch module postgis-3.4.2
:
Bước 1: Tải mã nguồn
Đầu tiên, tải gói mã nguồn của module postgis-3.4.2
từ trang web chính thức của PostGIS.
wget https://download.osgeo.org/postgis/source/postgis-3.4.2.tar.gz
Bước 2: Giải nén gói mã nguồn
Giải nén gói mã nguồn đã tải về.
tar zxvf postgis-3.4.2.tar.gz
cd postgis-3.4.2
2
Bước 3: Cấu hình tùy chọn biên dịch
Cấu hình các tùy chọn biên dịch, chỉ định đường dẫn cấu hình PostgreSQL và các tham số khác.
./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"
Bước 4: Biên dịch và cài đặt
Biên dịch và cài đặt module postgis-3.4.2
.
make -j ${CPU_NUMBER}
make install
2
Bước 5: Xác nhận module đã được tải
Sử dụng công cụ dòng lệnh PostgreSQL để xác nhận module postgis
đã được tải thành công:
${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
Nếu module đã được tải thành công, bạn sẽ thấy thông tin phiên bản PostGIS
.
Biên dịch module pg_jieba
Module pg_jieba
là một phần mở rộng của PostgreSQL để phân tách từ tiếng Trung. Dưới đây là các bước để biên dịch module pg_jieba
:
Bước 1: Lấy mã nguồn
Đầu tiên, clone kho mã nguồn của module pg_jieba
từ GitHub.
git clone https://github.com/jaiminpan/pg_jieba.git
cd pg_jieba
git submodule update --init --recursive
2
3
Bước 2: Cấu hình tùy chọn biên dịch
Cấu hình các tùy chọn biên dịch, chỉ định đường dẫn cấu hình PostgreSQL và các tham số khác.
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}
Bước 3: Biên dịch và cài đặt
Biên dịch và cài đặt module pg_jieba
.
cmake --build builddir -j ${CPU_NUMBER}
cmake --install builddir
2
Bước 4: Xác nhận module đã được tải
Sử dụng công cụ dòng lệnh PostgreSQL để xác nhận module pg_jieba
đã được tải thành công:
${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
Nếu module đã được tải thành công, bạn sẽ thấy thông tin liên quan đến pg_jieba
.
Tổng kết
Thông qua các bước trên, bạn có thể biên dịch và cài đặt các module PostgreSQL cần thiết trong môi trường ServBay. Trong quá trình biên dịch, hãy đảm bảo chỉ định đúng phiên bản PostgreSQL và các cấu hình liên quan để đảm bảo module tương thích với môi trường cơ sở dữ liệu của bạn. Hy vọng bài viết này sẽ giúp bạn hoàn thành công việc biên dịch module PostgreSQL một cách suôn sẻ.