暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

基于 openEuler 22.03-LTS-SP4 编译安装 PolarDB PG 15.13 + pg_repack + PostGIS + pgRouting

原创 岳麓丹枫 2025-09-13
137

Table of Contents

docker 方式搭建操作系统 (openEuler 22.03-LTS-SP4)

wget https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/docker_img/x86_64/openEuler-docker.x86_64.tar.xz docker load -i openEuler-docker.x86_64.tar.xz docker run -it -d --name openeuler22.03_sp4 -h openeuler22.03_sp4 -p 23222:22 -p 23389:3389 --privileged=true openeuler-22.03-lts-sp4 /bin/bash docker exec -it openeuler22.03_sp4 /bin/bash

配置 yum 源

cd /etc/yum.repos.d/ mkdir -p backup mv openEuler.repo backup cat > /etc/yum.repos.d/openEuler.repo <<"EOF" [OS] name=OS baseurl=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/everything/$basearch/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/EPOL/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler EOF yum clean all yum makecache

下载编译环境需要的包

dnf upgrade -y --refresh dnf install -y epel-release epel-next-release dnf remove -y langpacks-en dnf install -y glibc-langpack-en glibc-langpack-zh dnf clean all dnf install glibc-all-langpacks locale -a # 执行下看看结果 # GCC and LLVM (should be 15) dnf install -y \ gcc \ gcc-c++ \ gdb \ make \ cmake \ clang \ llvm-devel \ && \ dnf clean all # Dependencies dnf install -y \ bison \ flex \ fuse-devel \ gettext \ krb5-devel \ krb5-server \ krb5-workstation \ libaio-devel \ libicu-devel \ libunwind-devel \ libuuid-devel \ libxml2-devel \ libxslt-devel \ libzstd-devel \ lz4-devel \ openldap-devel \ openssl-devel \ pam-devel \ perl-CPAN \ perl-DBI \ perl-IPC-Run \ perl-ExtUtils-Embed \ perl-File-Find-Rule \ perl-Test-Simple \ python3-devel \ readline-devel \ tcl-devel \ xerces-c-devel \ zlib-devel \ && \ dnf clean all # Tools dnf install -y \ autoconf \ wget \ sudo \ vim \ git \ rpm-build \ && \ dnf clean all yum install iproute # create user # USER_NAME=postgres # groupadd -r $USER_NAME -g 1000 && \ # useradd -u 1000 -g $USER_NAME $USER_NAME -p '' && \ # usermod -aG wheel $USER_NAME # cd /home/$USER_NAME # modify conf # echo "ulimit -c unlimited" >> /home/postgres/.bashrc # echo "export PGHOST=127.0.0.1" >> /home/postgres/.bashrc # echo "export PATH=/home/postgres/tmp_polardb_pg_15_base/bin:\$PATH" >> /home/postgres/.bashrc # echo "export PATH=/home/postgres/tmp_polardb_pg_16_base/bin:\$PATH" >> /home/postgres/.bashrc # echo "export PATH=/home/postgres/tmp_polardb_pg_17_base/bin:\$PATH" >> /home/postgres/.bashrc # cd /home/$USER_NAME export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8

下载 PolarDB for PostgreSQL 源码

git clone -b POLARDB_15_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git cd PolarDB-for-PostgreSQL/

编译

[root@openeuler22 PolarDB-for-PostgreSQL]# ./build.sh --help build.sh is a script to compile and initialize PolarDB demo cluster. Usage: --prefix=<prefix for PolarDB installation> --port=<port to run PolarDB on>, specifies which port to run PolarDB on --debug=[on|off], specifies whether to compile PolarDB with debug mode (affecting compiler flags) -m --minimal compile with minimal extention set --jobs=<jobs number for compile>, specifies CPU cores number for compiling --quiet=[on|off], configure with quiet mode or not, default on. more info for debug if off --clean, stop and clean existing cluster --nc,--nocompile, prevents recompile PolarDB --ni,--noinit, prevents init PolarDB cluster --ws,--withstandby init the database with standby --wr,--withreplica init the database with replica --ec,--extra-configure=<configure flag>, pass extra flag to configure --ei,--extra-initdb=<initdb flag>, pass extra flag to initdb Please lookup the following secion to find the default values for above options. Typical command patterns to kick off this script: 1) To just cleanup, re-compile, re-init PolarDB, -m is recommanded: build.sh -m 2) To run with specific port, standby and replica build.sh --port=5432 --ws=1 --wr=1 ./build.sh --prefix=/polardb --port=5432 --debug=on --jobs=8 --ni 编译之后的代码在 /polardb 目录下 [root@openeuler22 PolarDB-for-PostgreSQL]# ./build.sh --prefix=/polardb --port=5432 --debug=on --jobs=8 --ni Begin clean existing installation, may raising errors, ignore them You need to run the 'configure' program first. See the file 'README.git' for installation instructions, or visit: <https://www.postgresql.org/docs/devel/installation.html> make: *** [Makefile:19: maintainer-clean] Error 1 Begin configure, flag: --enable-depend --with-uuid=e2fs --disable-rpath --with-segsize=128 --with-openssl --enable-nls --with-libxml --with-libxslt --with-icu --with-pam --with-gssapi --with-ldap --with-perl --with-python --with-tcl --with-llvm --with-lz4 --with-zstd --with-system-tzdata=/usr/share/zoneinfo --with-libunwind -q --prefix=/polardb/tmp_polardb_pg_15_base --with-pgport=5432 Begin compile and install PolarDB, flag: -j8 -s Makefile:42: warning: overriding recipe for target 'check' ../../src/makefiles/pgxs.mk:451: warning: ignoring old recipe for target 'check' Skip init PolarDB cluster [root@openeuler22 PolarDB-for-PostgreSQL]# ll /polardb/ total 4 drwxr-xr-x 6 root root 4096 Aug 28 17:51 tmp_polardb_pg_15_base [root@openeuler22 PolarDB-for-PostgreSQL]# ll /polardb/tmp_polardb_pg_15_base/ total 16 drwxr-xr-x 2 root root 4096 Aug 28 17:54 bin drwxr-xr-x 4 root root 4096 Aug 28 17:51 include drwxr-xr-x 4 root root 4096 Aug 28 17:52 lib drwxr-xr-x 5 root root 4096 Aug 28 17:54 share

初始化数据库并测试数据库可以正常运行

./bin/initdb -U postgres -D ./data --lc-collate='C' --lc-ctype='C' -E UTF8 mkdir -p ./data/polar_cache_trash bin/pg_ctl -D ./data -l logfile start [postgres@openeuler22 polardb_pg_15.13]ps -ef | grep post root 247 67 0 09:49 pts/1 00:00:00 su - postgres postgres 248 247 0 09:49 pts/1 00:00:00 -bash postgres 330 1 0 09:49 ? 00:00:00 /polardb/polardb_pg_15.13/bin/postgres -D data postgres 331 330 0 09:49 ? 00:00:00 postgres(5432): checkpointer postgres 332 330 0 09:49 ? 00:00:00 postgres(5432): background writer postgres 334 330 0 09:49 ? 00:00:00 postgres(5432): walwriter postgres 335 330 0 09:49 ? 00:00:00 postgres(5432): autovacuum launcher postgres 336 330 0 09:49 ? 00:00:00 postgres(5432): polar resource manager postgres 337 330 0 09:49 ? 00:00:00 postgres(5432): logical replication launcher postgres 338 248 0 09:50 pts/1 00:00:00 ps -ef postgres 339 248 0 09:50 pts/1 00:00:00 grep --color=auto post [postgres@openeuler22 polardb_pg_15.13]$ ./bin/psql -Upostgres -d postgres psql (PostgreSQL 15.13 (PolarDB 15.13.4.0 build 1c8d76ee) on x86_64-linux-gnu) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges ---------------+----------+----------+---------+-------+------------+-----------------+----------------------- polardb_admin | postgres | UTF8 | C | C | | libc | =T/postgres + | | | | | | | postgres=CTc/postgres postgres | postgres | UTF8 | C | C | | libc | template0 | postgres | UTF8 | C | C | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres (4 rows) * openEuler 22.03-LTS-SP3 环境 postgres=# \q [postgres@openeuler22 polardb_pg_15.13]$ ldd ./bin/psql linux-vdso.so.1 (0x00007ffe73f7e000) libpq.so.5 => /polardb/polardb_pg_15.13/./bin/../lib/libpq.so.5 (0x000074df8fb76000) libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x000074df8fb1a000) libm.so.6 => /usr/lib64/libm.so.6 (0x000074df8fa3f000) libc.so.6 => /usr/lib64/libc.so.6 (0x000074df8f83e000) libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x000074df8f7a3000) libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x000074df8f4b4000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x000074df8f45f000) libldap.so.2 => /usr/lib64/libldap.so.2 (0x000074df8f3fb000) libtinfo.so.6 => /usr/lib64/libtinfo.so.6 (0x000074df8f3c8000) /lib64/ld-linux-x86-64.so.2 (0x000074df8fbcc000) libz.so.1 => /usr/lib64/libz.so.1 (0x000074df8f3ae000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x000074df8f2c7000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x000074df8f2ad000) libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x000074df8f2a7000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x000074df8f295000) libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x000074df8f28e000) libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x000074df8f27b000) liblber.so.2 => /usr/lib64/liblber.so.2 (0x000074df8f269000) libsasl2.so.3 => /usr/lib64/libsasl2.so.3 (0x000074df8f249000) libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x000074df8f21d000) libcrypt.so.1 => /usr/lib64/libcrypt.so.1 (0x000074df8f1dd000) libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x000074df8f142000)

编译 pg_repack

下载并解压 pg_repack 包

  • 参考:
    https://reorg.github.io/pg_repack/
    http://pgxn.org/dist/pg_repack/
wget https://api.pgxn.org/dist/pg_repack/1.5.2/pg_repack-1.5.2.zip unzip pg_repack-1.5.2.zip cd pg_repack-1.5.2 export PATH=/polardb/tmp_polardb_pg_15_base/bin:$PATH export PG_CONFIG=/polardb/tmp_polardb_pg_15_base/bin/pg_config make make install

检查是否可以正常创建 pg_repack 扩展

  • 构造数据
[root@openeuler22 ~]# /polardb_debug/tmp_polardb_pg_15_base/bin/psql -Upostgres psql (PostgreSQL 15.13 (PolarDB 15.13.4.0 build 1c8d76ee debug) on x86_64-linux-gnu) Type "help" for help. postgres=# create extension pg_repack ; CREATE EXTENSION postgres=# \dx pg_repack List of installed extensions Name | Version | Schema | Description -----------+---------+--------+-------------------------------------------------------------- pg_repack | 1.5.2 | public | Reorganize tables in PostgreSQL databases with minimal locks (1 row) create table test(id bigserial primary key, info text); insert into test(info) select n||'info' from generate_series(1,1000000)n; update test set info='xxx' ;
  • 开始清理
pg_repack -U postgres -d postgres -t test -D -k -j2 [root@openeuler22 pg_repack-1.5.2]# /polardb_debug/tmp_polardb_pg_15_base/bin/pg_repack -U postgres -d postgres -t test -k -D -j2 NOTICE: Setting up workers.conns INFO: repacking table "public.test" 经过测试, 发现 pg_repack-1.5.2 基于 openEuler22.03-LTS-SP4 编译存在bug , 需要修改如下地方 将 relhasoids 改为 false 之后, 再编译 pg_repack

image.png

编译 PostGIS

安装基础包(安装 libtiff, libcurl,mpfr 等库(proj会依赖该库))

# dnf groupinstall "Development Tools" -y . dnf groupinstall "Development Tools" -y dnf install -y git cmake make gcc gcc-c++ wget unzip \ autoconf automake libtool pkgconfig \ sqlite-devel libtiff-devel mpfr-devel libcurl-devel \ json-c-devel libxml2-devel protobuf-devel protobuf-c-devel \ libjpeg-devel curl-devel expat-devel \ python3-devel python3-pip

编译 proj 8.2.1

mkdir -p /usr/local/src cd /usr/local/src wget https://download.osgeo.org/proj/proj-8.2.1.tar.gz tar -xzf proj-8.2.1.tar.gz cd proj-8.2.1 mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/proj-8.2.1 make -j$(nproc) && make install

编译 GEOS 3.12.1

cd /usr/local/src wget https://download.osgeo.org/geos/geos-3.12.1.tar.bz2 tar -xjf geos-3.12.1.tar.bz2 cd geos-3.12.1 && ./configure --prefix=/usr/local/geos-3.12.1 && make -j$(nproc) && make install

编译 GDAL 3.8.0

安装指导参考: https://gdal.org/build_hints.html
必须项如下:
image.png

cd /usr/local/src wget https://download.osgeo.org/gdal/3.8.0/gdal-3.8.0.tar.gz tar -xzf gdal-3.8.0.tar.gz cd gdal-3.8.0 mkdir build cd build cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=/usr/local/gdal-3.8.0 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=/usr/local/proj-8.2.1 cmake --build . -j $(nproc) && cmake --build . --target install -j $(nproc) #################### 说明 #################### # 编译成动态库 -DBUILD_SHARED_LIBS=ON \ # 配置装路径 -DCMAKE_INSTALL_PREFIX=/usr/local/gdal-3.8.0 \ # 编译成 relase 版本 -DCMAKE_BUILD_TYPE=Release \ # 更通用,CMake 自动解析 -DCMAKE_PREFIX_PATH=/usr/local/proj-8.2.1 # 或者 -DPROJ_DIR=/usr/local/proj-8.2.1 # 如下方式已不推荐 # -DPROJ_INCLUDE_DIR=/usr/local/proj-8.2.1/include \ # -DPROJ_LIBRARY=/usr/local/proj-8.2.1/lib64/libproj.so \ /* . . . -- Configuring done -- Generating done -- Build files have been written to: /usr/local/src/gdal-3.8.0/build */

编译 PostGIS 3.4.1

  • 下载
    https://download.osgeo.org/postgis/source/
    wget https://download.osgeo.org/postgis/source/postgis-3.4.1.tar.gz

  • 编译安装

cd /usr/local/src wget https://download.osgeo.org/postgis/source/postgis-3.4.1.tar.gz tar xf postgis-3.4.1.tar.gz cd postgis-3.4.1 #export PATH export LD_LIBRARY_PATH=/usr/local/geos-3.12.1/lib64:/usr/local/proj-8.2.1/lib64:/usr/local/gdal-3.8.0/lib64:$LD_LIBRARY_PATH ./configure \ --with-pgconfig=/polardb/tmp_polardb_pg_15_base/bin/pg_config \ --with-projdir=/usr/local/proj-8.2.1 \ --with-geosconfig=/usr/local/geos-3.12.1/bin/geos-config \ --with-gdalconfig=/usr/local/gdal-3.8.0/bin/gdal-config \ LDFLAGS="-L/usr/local/proj-8.2.1/lib64 -L/usr/local/geos-3.12.1/lib64 -L/usr/local/gdal-3.8.0/lib64" \ CPPFLAGS="-I/usr/local/proj-8.2.1/include -I/usr/local/geos-3.12.1/include -I/usr/local/gdal-3.8.0/include" make clean && make all -j $(nproc) && make install

打印信息

export LD_LIBRARY_PATH=/usr/local/geos-3.12.1/lib64:/usr/local/proj-8.2.1/lib64:/usr/local/gdal-3.8.0/lib64:$LD_LIBRARY_PATH ./configure \ --with-pgconfig=/polardb/tmp_polardb_pg_15_base/bin/pg_config \ --with-projdir=/usr/local/proj-8.2.1 \ --with-geosconfig=/usr/local/geos-3.12.1/bin/geos-config \ --with-gdalconfig=/usr/local/gdal-3.8.0/bin/gdal-config \ LDFLAGS="-L/usr/local/proj-8.2.1/lib64 -L/usr/local/geos-3.12.1/lib64 -L/usr/local/gdal-3.8.0/lib64" \ CPPFLAGS="-I/usr/local/proj-8.2.1/include -I/usr/local/geos-3.12.1/include -I/usr/local/gdal-3.8.0/include" PostGIS is now configured for x86_64-pc-linux-gnu -------------- Compiler Info ------------- C compiler: gcc -std=gnu99 -g -O2 -fno-math-errno -fno-signed-zeros -Wall C++ compiler (Wagyu): gcc -std=c++11 -x c++ C++ compiler (FlatGeobuf): gcc -std=c++11 -x c++ CPPFLAGS: -I/usr/local/geos-3.12.1/include -I/usr/local/proj-8.2.1/include -I/usr/include/libxml2 -I/usr/include/json-c -DNDEBUG -I/usr/local/proj-8.2.1/include -I/usr/local/geos-3.12.1/include -I/usr/local/gdal-3.8.0/include LDFLAGS: -L/usr/local/proj-8.2.1/lib64 -L/usr/local/geos-3.12.1/lib64 -L/usr/local/gdal-3.8.0/lib64 -lm SQL preprocessor: /usr/bin/cpp -traditional-cpp -w -P -Upixel -Ubool Archiver: gcc-ar rs -------------- Additional Info ------------- Interrupt Tests: ENABLED -------------- Dependencies -------------- GEOS config: /usr/local/geos-3.12.1/bin/geos-config GEOS version: 3.12.1 GDAL config: /usr/local/gdal-3.8.0/bin/gdal-config GDAL version: 3.8.0 PostgreSQL config: /polardb_debug/tmp_polardb_pg_15_base/bin/pg_config PostgreSQL version: PostgreSQL 15.13 (PolarDB 15.13.4.0 build 1c8d76ee debug) on x86_64-linux-gnu PROJ4 version: 82 Libxml2 config: /usr/bin/xml2-config Libxml2 version: 2.9.14 JSON-C support: yes protobuf support: yes protobuf-c version: 1004000 PCRE support: Version 2 Perl: /usr/bin/perl --------------- Extensions --------------- PostgreSQL EXTENSION support: enabled PostGIS Raster: enabled PostGIS Topology: enabled SFCGAL support: disabled Address Standardizer support: enabled -------- Documentation Generation -------- xsltproc: /usr/bin/xsltproc xsl style sheets: dblatex: convert: mathml2.dtd: http://www.w3.org/Math/DTD/mathml2/mathml2.dtd configure: WARNING: configure: WARNING: | You are building using --with-projdir. This option isn't standard and | configure: WARNING: | might be incompatible with future releases of PROJ. | configure: WARNING: | You can instead adjust the PKG_CONFIG_PATH environment variable if you | configure: WARNING: | installed software in a non-standard prefix. | configure: WARNING: | Alternatively, you may set the environment variables PROJ_CFLAGS and | configure: WARNING: | PROJ_LIBS to avoid the need to call pkg-config. | [root@openeuler22 postgis-3.4.1]# [root@openeuler22 postgis-3.4.1]# make -j $(nproc) && make install ... . . . /usr/bin/install -c -m 644 address_standardizer.control address_standardizer_data_us.control sql/address_standardizer--1.0--3.4.1.sql sql/address_standardizer--3.4.1.sql sql/address_standardizer--ANY--3.4.1.sql sql/address_standardizer--TEMPLATED--TO--ANY.sql sql/address_standardizer_data_us--3.4.1--3.4.1next.sql sql/address_standardizer_data_us--3.4.1.sql sql/address_standardizer_data_us--3.4.1next--3.4.1.sql sql/address_standardizer_data_us--ANY--3.4.1.sql '/polardb_debug/tmp_polardb_pg_15_base/share/postgresql/extension/' /usr/bin/install -c -m 644 ./README.address_standardizer '/polardb_debug/tmp_polardb_pg_15_base/share/doc/postgresql/extension/' /usr/bin/mkdir -p '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode/address_standardizer-3' /usr/bin/mkdir -p '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/ /usr/bin/install -c -m 644 address_parser.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 address_standardizer.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 std_pg_hash.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 analyze.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 err_param.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 export.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 gamma.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 hash.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 lexicon.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 pagc_tools.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 parseaddress-api.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 standard.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ /usr/bin/install -c -m 644 tokenize.bc '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode'/address_standardizer-3/./ cd '/polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/bitcode' && /usr/bin/llvm-lto -thinlto -thinlto-action=thinlink -o address_standardizer-3.index.bc address_standardizer-3/address_parser.bc address_standardizer-3/address_standardizer.bc address_standardizer-3/std_pg_hash.bc address_standardizer-3/analyze.bc address_standardizer-3/err_param.bc address_standardizer-3/export.bc address_standardizer-3/gamma.bc address_standardizer-3/hash.bc address_standardizer-3/lexicon.bc address_standardizer-3/pagc_tools.bc address_standardizer-3/parseaddress-api.bc address_standardizer-3/standard.bc address_standardizer-3/tokenize.bc make[2]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/address_standardizer' make[1]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions' make[1]: Entering directory '/usr/local/src/postgis-3.4.1' make -C extensions/ install-extension-upgrades-from-known-versions make[2]: Entering directory '/usr/local/src/postgis-3.4.1/extensions' for DIR in postgis postgis_tiger_geocoder postgis_raster postgis_topology address_standardizer; do \ echo "---- Making install-extension-upgrades-from-known-versions in ${DIR}"; \ make -C "${DIR}" install-extension-upgrades-from-known-versions || exit 1; \ done ---- Making install-extension-upgrades-from-known-versions in postgis make[3]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/postgis' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension postgis \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql postgis make[3]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/postgis' ---- Making install-extension-upgrades-from-known-versions in postgis_tiger_geocoder make[3]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/postgis_tiger_geocoder' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension postgis_tiger_geocoder \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql postgis_tiger_geocoder make[3]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/postgis_tiger_geocoder' ---- Making install-extension-upgrades-from-known-versions in postgis_raster make[3]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/postgis_raster' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension postgis_raster \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql postgis_raster make[3]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/postgis_raster' ---- Making install-extension-upgrades-from-known-versions in postgis_topology make[3]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/postgis_topology' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension postgis_topology \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql postgis_topology make[3]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/postgis_topology' ---- Making install-extension-upgrades-from-known-versions in address_standardizer make[3]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/address_standardizer' Makefile:230: warning: overriding recipe for target 'install' /polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/pgxs/src/makefiles/pgxs.mk:236: warning: ignoring old recipe for target 'install' TARGET=`echo install-extension-upgrades-from-known-versions-data | sed 's/-data$//'`; \ for lang in us; do \ EXTENSION_DATA_INSTALL=1 \ make ${TARGET} \ EXTENSION=address_standardizer_data_${lang} \ || exit 1; \ done make[4]: Entering directory '/usr/local/src/postgis-3.4.1/extensions/address_standardizer' Makefile:230: warning: overriding recipe for target 'install' /polardb_debug/tmp_polardb_pg_15_base/lib/postgresql/pgxs/src/makefiles/pgxs.mk:236: warning: ignoring old recipe for target 'install' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension address_standardizer_data_us \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql address_standardizer_data_us make[4]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/address_standardizer' /usr/bin/perl ../../loader/postgis.pl \ install-extension-upgrades \ --extension address_standardizer \ --pg_sharedir /polardb_debug/tmp_polardb_pg_15_base/share/postgresql \ 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.4.10 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.0.10 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.0 Installation target: /polardb_debug/tmp_polardb_pg_15_base/share/postgresql address_standardizer make[3]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions/address_standardizer' make[2]: Leaving directory '/usr/local/src/postgis-3.4.1/extensions' make[1]: Leaving directory '/usr/local/src/postgis-3.4.1' [root@openeuler22 postgis-3.4.1]#

编译 PgRouting

安装 boost 包

如果编译报错如下, 说明缺少 boost 包, 意思是:编译 **pgRouting 3.6.0** 时,CMake 找不到 Boost 的头文件目录(`Boost_INCLUDE_DIR`),而 pgRouting 至少需要 **Boost 1.56**。 CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Boost (missing: Boost_INCLUDE_DIR) (Required is at least version "1.56.0") Call Stack (most recent call first): /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake/Modules/FindBoost.cmake:2360 (find_package_handle_standard_args) CMakeLists.txt:83 (find_package) sudo dnf install -y boost-devel

编译安装 pgrouting

cd /usr/local/src wget https://github.com/pgRouting/pgrouting/archive/refs/tags/v3.6.0.tar.gz tar -xzf v3.6.0.tar.gz cd pgrouting-3.6.0 mkdir build && cd build cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local/pgrouting-3.6.0 \ -DPOSTGRESQL_PG_CONFIG=/polardb_debug/tmp_polardb_pg_15_base/bin/pg_config \ -DWITH_DD=OFF make -j$(nproc) sudo make install

验证 postgis 与 pgrouting 插件功能

-- 1. 创建扩展 CREATE EXTENSION IF NOT EXISTS postgis; CREATE EXTENSION IF NOT EXISTS pgrouting; -- 2. 验证PostGIS功能 -- 创建包含几何类型的表 CREATE TABLE IF NOT EXISTS test_postgis ( id SERIAL PRIMARY KEY, name VARCHAR(50), geom GEOMETRY(POINT, 4326) -- 使用WGS84坐标系的点类型 ); -- 插入测试数据 INSERT INTO test_postgis (name, geom) VALUES ('Point 1', ST_GeomFromText('POINT(116.3975 39.9085)', 4326)), -- 北京坐标 ('Point 2', ST_GeomFromText('POINT(121.4737 31.2304)', 4326)); -- 上海坐标 -- 查询验证数据是否正确插入 SELECT id, name, ST_AsText(geom) as coordinates FROM test_postgis; -- 验证空间函数是否正常工作 SELECT name, ST_X(geom) as longitude, ST_Y(geom) as latitude FROM test_postgis; -- 3. 验证PgRouting功能 -- 创建路网表(edges) CREATE TABLE IF NOT EXISTS test_network ( id SERIAL PRIMARY KEY, source INTEGER, target INTEGER, cost FLOAT, reverse_cost FLOAT, geom GEOMETRY ); -- 插入测试路网数据 INSERT INTO test_network (source, target, cost, reverse_cost, geom) VALUES (1, 2, 1.0, 1.0, ST_GeomFromText('LINESTRING(116.3975 39.9085, 121.4737 31.2304)', 4326)); -- 使用pgrouting函数验证功能 SELECT * FROM pgr_version(); -- 查看PgRouting版本信息 -- 创建节点表 SELECT pgr_createVerticesTable('test_network', 'geom'); -- 创建边表 SELECT pgr_createTopology('test_network', 0.001, 'geom'); -- 验证拓扑结构是否正确创建 SELECT COUNT(*) as node_count FROM test_network_vertices_pgr; SELECT id, source, target, cost FROM test_network; -- 清理测试数据 DROP TABLE IF EXISTS test_postgis; DROP TABLE IF EXISTS test_network; DROP TABLE IF EXISTS test_network_vertices_pgr;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论