opengauss中安装PostGIS - 教程

1. 环境准备

操作系统:CentOS/Ubuntu

1. 以操作系统用户omm登录数据库任一主机。

2.创建GCC安装主目录\$GAUSSHOME/gcc和代码下载目录\$GAUSSHOME/gcc/packages

mkdir $GAUSSHOME/gcc
mkdir $GAUSSHOME/gcc/packages

3. 下载软件包gcc-7.3.0.tar.gz、gmp-6.1.0.tar.xz、mpc-1.0.3.tar.gz、mpfr-3.1.4.tar.gz至\$GAUSSHOME/gcc/packages目录 (使用华为云,速度快)

wget https://repo.huaweicloud.com/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
wget https://repo.huaweicloud.com/gnu/gmp/gmp-6.1.0.tar.xz
wget https://repo.huaweicloud.com/gnu/mpfr/mpfr-3.1.4.tar.gz
wget https://repo.huaweicloud.com/gnu/mpc/mpc-1.0.3.tar.gz

4.解压下载软件

cd $GAUSSHOME/gcc/packages
tar -xzf gcc-7.3.0.tar.gz
tar -xvJf gmp-6.1.0.tar.xz
tar -xzf mpc-1.0.3.tar.gz
tar -xzf mpfr-3.1.4.tar.gz

5. 创建GCC安装目录

mkdir $GAUSSHOME/gcc/gcc-7.3.0
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/gcc

6.安装gmp-6.1.0

cd $GAUSSHOME/gcc/packages/gmp-6.1.0
./configure --prefix $GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0
make -sj
make install -sj

7.安装mpfr-3.1.4

cd $GAUSSHOME/gcc/packages/mpfr-3.1.4
./configure --prefix $GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4 --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0
make -sj
make install -sj

8.安装mpc-1.0.3

cd $GAUSSHOME/gcc/packages/mpc-1.0.3
./configure --prefix=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3  --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0 --with-mpfr=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4
make -sj
make install -sj

9.安装gcc-7.3.0

9.1 添加lib路径至~/.bashrc

在vim编辑器中打开~/.bashrc文档

vim ~/.bashrc

添加以下内容:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0/lib:$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4/lib:$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3/lib

执行如下命令使设置生效

source ~/.bashrc

9.2 进入$GAUSSHOME/gcc/packages/gcc-7.3.0目录,执行下列命令完成gcc安装操作

cd $GAUSSHOME/gcc/packages/gcc-7.3.0
./configure --prefix=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc -disable-multilib --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0 -enable-languages=c,c++ --with-mpfr=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4 --with-mpc=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3
make -j2
make install -j2

9.3 设置环境变量

在vim编辑器中打开~/.bashrc文档。

vim ~/.bashrc

加入以下内容:

export CC=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin/gcc
export CXX=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin/g++
export LD_LIBRARY_PATH=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/lib64:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin:$PATH

执行如下命令使设置生效

source ~/.bashrc

2. PostGIS依赖库安装

1.  从网站https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz获取PostGIS源码至$GAUSSHOME目录,下载压缩包,解压后需将文件夹重命名为postgis-xc

1.1  进入 $GAUSSHOME(若变量未设置,先自行 export)

cd "$GAUSSHOME"

1.2 下载 PostGIS 源码压缩包

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz

1.3 解压

tar -xzf postgis-xc-master-2020-09-17.tar.gz

1.4 重命名文件夹为 postgis-xc

mv postgis-xc-master postgis-xc

2. 下载补丁文件到$GAUSSHOME目录,并打入补丁

2.1 确保变量已设置

cd "$GAUSSHOME"

2.2 进入 postgis-xc 源码目录

cd postgis-xc

2.3 下载补丁文件

curl -L -A "Mozilla/5.0" \
  -o postgis_2.4.2-2.patch \
  https://gitee.com/opengauss/openGauss-third_party/raw/master/gpl_dependency/postgis/postgis_2.4.2-2.patch

如果拿到的是HTML页面的话,可以直接通过以下网址下载补丁文件,再放到$GAUSSHOME/include/postgresql/server/路径下即可

https://gitcode.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h

打入补丁

patch -p1 < postgis_2.4.2-2.patch

3. 分别编译Geos、Proj、JSON-C、Libxml2、PostGIS并生成相关动态链接库

3.1 Geos

cd $GAUSSHOME/postgis-xc/geos-3.6.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/geos
make -sj
make install -sj

3.2 Proj

cd $GAUSSHOME/postgis-xc/proj-4.9.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/proj
make -sj
make install -sj

3.3 JSON-C

cd $GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/json
make -sj
make install -sj

3.4 Libxml2

cd $GAUSSHOME/postgis-xc/libxml2-2.7.1
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/libxml2
make -sj
make install -sj

3.5 Gdal

cd $GAUSSHOME/postgis-xc/gdal-1.11.0
chmod +x ./configure
chmod +x ./install-sh
./configure --prefix=$GAUSSHOME/install/gdal --with-xml2=$GAUSSHOME/install/libxml2/bin/xml2-config --with-geos=$GAUSSHOME/install/geos/bin/geos-config --with-static_proj4=$GAUSSHOME/install/proj CFLAGS='-O2 -fpermissive -pthread'
make -sj
make install -sj

3.6 PostGIS

cd $GAUSSHOME/postgis-xc/postgis-2.4.2
chmod +x ./configure
./configure \
  --prefix=$GAUSSHOME/install/postgis2.4.2 \
  --with-pgconfig=$GAUSSHOME/bin/pg_config \
  --with-projdir=$GAUSSHOME/install/proj \
  --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config \
  --with-jsondir=$GAUSSHOME/install/json \
  --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config \
  --without-raster \
  --without-topology \
  CFLAGS='-O2 -fpermissive -DPGXC -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w' \
  CC=g++

若在configure阶段,出现一些命令找不到的问题,则可能是环境变量的问题,再导入一下

export CPPFLAGS="-I$GAUSSHOME/include/postgresql/server/cm -I$GAUSSHOME/include/postgresql/server -I$GAUSSHOME/include"
export LDFLAGS="-L$GAUSSHOME/lib"
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
make -sj
make install -sj

3.7 omm用户执行下面的语句,完成PostGIS相关动态链接库在数据库实例节点中的分发

mv $GAUSSHOME/lib/postgresql/postgis-2.4.so $GAUSSHOME/install/postgis-2.4.so
cp $GAUSSHOME/install/postgis-2.4.so $GAUSSHOME/lib/postgresql/postgis-2.4.so
cp $GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2
cp $GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1
cp $GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9
cp $GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so
cp $GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis--2.4.2.sql
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control

3.8 重启数据库实例。

gs_om -t restart

3. 测试扩展

# 连接opengauss数据库
gsql
#测试postgis
create extension postgis

参考链接:https://blog.csdn.net/GaussDB/article/details/128670415?spm=1001.2014.3001.5506

posted on 2026-02-11 16:22  ljbguanli  阅读(22)  评论(0)    收藏  举报