快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3

news2024/12/15 11:52:13

快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3

  • 1、确保已经安装了PostgreSQL数据库。
  • 2、添加PostGIS的EPEL仓库
  • 3、使用YUM安装PostGIS
  • 4、以下为其他安装方式,一个个去找源码的编译安装,过程较为繁琐(不熟路的不推荐)

要在基于RPM的系统(如CentOS或RHEL)上使用yum安装PostGIS 3.3,需要确保有正确的仓库配置以及所有必需的依赖项。
以下是安装PostGIS的步骤:

1、确保已经安装了PostgreSQL数据库。

如果还未安装 PostgreSQL 15,可以按照以下步骤进行操作:

  1. 添加 PostgreSQL Yum 仓库
    首先,需要添加 PostgreSQL 的官方 Yum 仓库。可以使用以下命令:

    sudo yum install -y https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    

    请根据您的操作系统版本(如 RHEL 8 或 CentOS 8)调整 URL。

    或者

sudo yum install epel-release
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-`rpm -E %{rhel}`-x86_64/pgdg-redhat-repo-latest.noarch.rpm

替换rpm -E %{rhel}为您的CentOS/RHEL版本号,例如7或8。

  1. 禁用默认的 PostgreSQL 模块(如果适用):
    在某些版本的 RHEL/CentOS 中,可能需要禁用默认的 PostgreSQL 模块:

    sudo dnf -y module disable postgresql
    
  2. 安装 PostgreSQL 15
    安装 PostgreSQL 15 及其相关工具:

    sudo yum install -y postgresql15 postgresql15-server
    
  3. 初始化数据库
    安装完成后,需要初始化数据库:

    sudo /usr/pgsql-15/bin/postgresql15-setup initdb
    
  4. 启动 PostgreSQL 服务
    启动 PostgreSQL 服务并设置为开机自启:

    sudo systemctl start postgresql-15
    sudo systemctl enable postgresql-15
    
  5. 检查 PostgreSQL 服务状态
    可以使用以下命令检查 PostgreSQL 服务的状态:

    sudo systemctl status postgresql-15
    

完成以上步骤后,已在系统上安装了 PostgreSQL 15。可以使用 psql 命令行工具连接到数据库并开始使用。

2、添加PostGIS的EPEL仓库

可以通过以下命令添加仓库:

sudo yum install epel-release
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-`rpm -E %{rhel}`-x86_64/pgdg-redhat-repo-latest.noarch.rpm

替换rpm -E %{rhel}为您的CentOS/RHEL版本号,例如7或8。

创建一个YUM仓库文件以便能够安装PostGIS。

sudo vi /etc/yum.repos.d/PostGIS.repo

添加以下内容:

[PostGIS]
name = PostGIS Official Repository
baseurl = https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-`rpm -E %{rhel}`-x86_64
enabled = 1
gpgcheck = 1
gpgkey = https://download.postgresql.org/pub/repos/yum/ACCC4CF8.gpg

替换rpm -E %{rhel}为您的CentOS/RHEL版本号。

3、使用YUM安装PostGIS

sudo yum install postgis33_15

注意:postgis33_15是PostGIS的包名,后面紧跟着的数字15表示它与PostgreSQL 15版本兼容。

一旦安装完成,则需要启用PostGIS扩展。
首先,登录到PostgreSQL:

psql -U postgres

然后,对于每个数据库启用PostGIS扩展:

CREATE EXTENSION postgis;

请确保替换步骤2中的版本号为您实际使用的CentOS/RHEL版本。
如果您使用的是PostgreSQL的不同主版本(例如14而不是15),您需要修改步骤3和步骤4中的仓库URL和包名称。

4、以下为其他安装方式,一个个去找源码的编译安装,过程较为繁琐(不熟路的不推荐)

操作系统为
CentOS Linux release 7.9.2009 (Core)
数据库为
postgresql 14.6


本文详细记录了在CentOS7.9系统上安装PostgreSQL14.6和PostGIS3.2.4的过程,包括环境准备、依赖包下载与安装、编译配置、错误排查以及数据库创建和加载PostGIS扩展的步骤。过程中遇到了如gcc、readline、zlib、libxml2、geos、proj、gdal、json-c、protobuf-c等依赖库的安装问题,并逐一解决。

postgis 是 postgresql 的一个扩展插件,具有强大的空间计算功能,很适合用于地图系统。



postgis 下载
登录 postgis 的官方网站:

http://postgis.net/

下载符合 postgresql 数据库版本的 postgis 安装包。

本文档使用的版本为 3.2.4,查看该版本的使用文档,安装要求如下:


包下载
经过多次尝试,最终整个环境包的版本使用情况如下:

postgresql 14.6

gcc 4.8.5

make 3.82

proj 8.2.1(新版本需要使用 cmake 进行编译安装)

libxml2 2.9.9(新版本需要使用 cmake 进行编译安装)

json-c 0.10(新版本需要使用 cmake 进行编译安装)

gdal 3.5.3(新版本需要使用 cmake 进行编译安装)

geos 3.6.6(新版本需要使用 cmake 进行编译安装)

各安装包的下载地址:

postgresql

PostgreSQL: File Browser

gcc

GCC Releases- GNU Project

proj

Download — PROJ 9.5.0 documentation

libxml2

Index of /sources/libxml2/

json-c

json-c releases

gdal

Releases · OSGeo/gdal · GitHub

geos

Download and Build | GEOS

cmake(如果使用的是proj等包的高级版本时可能需要)

Download CMake

安装 postgresql
1、创建安装用户

[root@test ~]$ useradd postgres

[root@test ~]$ passwd postgres

2、上传安装包到执行目录

[root@test ~]$ mkdir -p /opt/postgresql/soft

[root@test ~]$ chown -R postgres:postgres /opt/postgresql

[root@test ~]$ cd /opt/postgresql/soft

[root@test soft]$ yum install lrzsz

[root@test soft]$ rz

[root@test soft]$ ls

postgresql-14.6.tar.bz2

3、解压缩安装包,.bz2 格式解压需要安装 bzip2

[root@test soft]$ yum install bzip2

[root@test soft]$ tar -xvf postgresql-14.6.tar.bz2

4、开始安装

[root@test soft]# cd postgresql-14.6

[root@test postgresql-14.6]# ls

aclocal.m4 config config.log configure configure.ac contrib COPYRIGHT doc GNUmakefile.in HISTORY INSTALL Makefile README src

[root@test postgresql-14.6]# ./configure

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking which template to use... linux

checking whether NLS is wanted... no

checking for default port number... 5432

checking for block size... 8kB

checking for segment size... 1GB

checking for WAL block size... 8kB

checking for gcc... no

checking for cc... no

configure: error: in `/opt/postgresql/soft/postgresql-14.6':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

报错很明显,没有找到 C 语言的编译器

安装 gcc 之后继续安装

[root@test postgresql-14.6]# yum install gcc

[root@test postgresql-14.6]# ./configure

......

checking for library containing dlsym... -ldl

checking for library containing socket... none required

checking for library containing shl_load... no

checking for library containing getopt_long... none required

checking for library containing shm_open... -lrt

checking for library containing shm_unlink... none required

checking for library containing clock_gettime... none required

checking for library containing fdatasync... none required

checking for library containing shmget... none required

checking for library containing backtrace_symbols... none required

checking for library containing gethostbyname_r... none required

checking for library containing pthread_barrier_wait... -lpthread

checking for library containing readline... no

configure: error: readline library not found

If you have readline already installed, see config.log for details on the

failure. It is possible the compiler isn't looking in the proper directory.

Use --without-readline to disable readline support.

报错显示为没有找到 readline 的库文件

安装 readline-devel 包解决

[root@test postgresql-14.6]# yum install readline

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Package readline-6.2-11.el7.x86_64 already installed and latest version

Nothing to do

[root@test postgresql-14.6]# yum install readline-devel.x86_64

继续安装

[root@test postgresql-14.6]# ./configure

......

checking for library containing readline... -lreadline

checking for inflate in -lz... no

configure: error: zlib library not found

If you have zlib already installed, see config.log for details on the

failure. It is possible the compiler isn't looking in the proper directory.

Use --without-zlib to disable zlib support.

[root@test postgresql-14.6]# yum install zlib

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Package zlib-1.2.7-20.el7_9.x86_64 already installed and latest version

Nothing to do

报错显示为没有找到 zlib 的库文件,同样安装 devel 包解决

[root@test postgresql-14.6]# yum install zlib-devel.x86_64

继续安装

[postgres@test postgresql-14.6]$ ./configure --prefix=/usr/local/pgsql-14.6

......

configure: using LDFLAGS= -Wl,--as-needed

configure: creating ./config.status

config.status: creating GNUmakefile

config.status: creating src/Makefile.global

config.status: creating src/include/pg_config.h

./config.status: line 1378: src/include/stamp-h: Permission denied

config.status: creating src/include/pg_config_ext.h

config.status: src/include/pg_config_ext.h is unchanged

./config.status: line 1382: src/include/stamp-ext-h: Permission denied

config.status: creating src/interfaces/ecpg/include/ecpg_config.h

config.status: src/interfaces/ecpg/include/ecpg_config.h is unchanged

./config.status: line 1384: src/interfaces/ecpg/include/stamp-h: Permission denied

config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s

config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c

config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c

config.status: linking src/include/port/linux.h to src/include/pg_config_os.h

config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

[postgres@test postgresql-14.6]$ exit

logout

[root@test postgresql-14.6]# mkdir /usr/local/pgsql-14.6

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/pgsql-14.6/

[root@test postgresql-14.6]# su - postgres

Last login: Tue Feb 28 10:01:38 CST 2023 on pts/1

[postgres@test ~]$ cd /opt/postgresql/soft/postgresql-14.6

[postgres@test postgresql-14.6]$ make

......

gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 isolation_main.o pg_regress.o -L../../../src/port -L../../../src/common -Wl,--as-needed -Wl,-rpath,'/usr/local/pgsql-14.6/lib',--enable-new-dtags -lpgcommon -lpgport -lz -lreadline -lpthread -lrt -ldl -lm -o pg_isolation_regress

make[2]: Leaving directory `/opt/postgresql/soft/postgresql-14.6/src/test/isolation'

make -C test/perl all

make[2]: Entering directory `/opt/postgresql/soft/postgresql-14.6/src/test/perl'

make[2]: Nothing to be done for `all'.

make[2]: Leaving directory `/opt/postgresql/soft/postgresql-14.6/src/test/perl'

make[1]: Leaving directory `/opt/postgresql/soft/postgresql-14.6/src'

make -C config all

make[1]: Entering directory `/opt/postgresql/soft/postgresql-14.6/config'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/opt/postgresql/soft/postgresql-14.6/config'

[postgres@test postgresql-14.6]$ make install

......

make -C config install

make[1]: Entering directory `/opt/postgresql/soft/postgresql-14.6/config'

/bin/mkdir -p '/usr/local/pgsql-14.6/lib/pgxs/config'

/bin/install -c -m 755 ./install-sh '/usr/local/pgsql-14.6/lib/pgxs/config/install-sh'

/bin/install -c -m 755 ./missing '/usr/local/pgsql-14.6/lib/pgxs/config/missing'

make[1]: Leaving directory `/opt/postgresql/soft/postgresql-14.6/config'

5、创建软连接,方便以后升级

[postgres@test pgsql-14.6]$ exit

logout

[root@test postgresql-14.6]# ln -s /usr/local/pgsql-14.6/ /usr/local/pgsql

6、配置环境变量

[postgres@test ~]$ vim .bash_profile

#末尾添加这些信息:

export PATH=/usr/local/pgsql/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH

[postgres@test ~]$ source .bash_profile

7、初始化环境

[postgres@test ~]$ export PGDATA=/opt/postgresql/pgdata

[postgres@test ~]$ mkdir /opt/postgresql/pgdata

[postgres@test ~]$ initdb

The files belonging to this database system will be owned by user "postgres".

This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".

The default database encoding has accordingly been set to "UTF8".

The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /opt/postgresql/pgdata ... ok

creating subdirectories ... ok

selecting dynamic shared memory implementation ... posix

selecting default max_connections ... 100

selecting default shared_buffers ... 128MB

selecting default time zone ... Asia/Shanghai

creating configuration files ... ok

running bootstrap script ... ok

performing post-bootstrap initialization ... ok

syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections

You can change this by editing pg_hba.conf or using the option -A, or

--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

pg_ctl -D /opt/postgresql/pgdata -l logfile start

8、启动数据库

[postgres@test ~]$ pg_ctl -D /opt/postgresql/pgdata -l logfile start

[postgres@test ~]$ ps -ef | grep postgres

root 75725 25505 0 14:59 pts/0 00:00:00 su - postgres

postgres 75729 75725 0 14:59 pts/0 00:00:00 -bash

postgres 75755 75729 0 15:00 pts/0 00:00:00 ps -ef

postgres 75756 75729 0 15:00 pts/0 00:00:00 grep --color=auto postgres

postgres 122926 1 0 Feb28 ? 00:00:00 /usr/local/pgsql-14.6/bin/postgres -D /opt/postgresql/pgdata

postgres 122928 122926 0 Feb28 ? 00:00:00 postgres: checkpointer

postgres 122929 122926 0 Feb28 ? 00:00:00 postgres: background writer

postgres 122930 122926 0 Feb28 ? 00:00:00 postgres: walwriter

postgres 122931 122926 0 Feb28 ? 00:00:00 postgres: autovacuum launcher

postgres 122932 122926 0 Feb28 ? 00:00:01 postgres: stats collector

postgres 122933 122926 0 Feb28 ? 00:00:00 postgres: logical replication launcher

安装 libxml2
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ xz -d libxml2-2.9.9.tar.xz

[postgres@test soft]$ tar -xvf libxml2-2.9.9.tar

3、安装

[postgres@test soft]$ cd libxml2-2.9.9

[postgres@test libxml2-2.9.9]$ ./configure --prefix=/usr/local/libxml2

[postgres@test libxml2-2.9.9]$ make && make install

......

make[4]: Entering directory `/opt/postgresql/soft/libxml2-2.9.9/python'

CC libxml.lo

libxml.c:14:20: fatal error: Python.h: No such file or directory

#include <Python.h>

^

compilation terminated.

make[4]: *** [libxml.lo] Error 1

make[4]: Leaving directory `/opt/postgresql/soft/libxml2-2.9.9/python'

make[3]: *** [all-recursive] Error 1

make[3]: Leaving directory `/opt/postgresql/soft/libxml2-2.9.9/python'

make[2]: *** [all] Error 2

make[2]: Leaving directory `/opt/postgresql/soft/libxml2-2.9.9/python'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/opt/postgresql/soft/libxml2-2.9.9'

make: *** [all] Error 2

报错没有找到 python 的头文件,安装 python 开发包解决

[postgres@test libxml2-2.9.9]$ exit

logout

[root@test postgresql-14.6]# mkdir /usr/local/libxml2

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/libxml2

[root@test postgresql-14.6]# yum install python-devel

[root@test postgresql-14.6]# su - postgres

Last login: Tue Feb 28 10:01:38 CST 2023 on pts/1

[postgres@test ~]$ cd /opt/postgresql/soft/libxml2-2.9.9

[postgres@test libxml2-2.9.9]$ make && make install

安装 geos
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ tar -xvf geos-3.6.6.tar.bz2

3、安装

[postgres@test soft]$ cd geos-3.6.6

[postgres@test geos-3.6.6]$ ./configure --prefix=/usr/local/geos

[postgres@test geos-3.6.6]$ exit

logout

[root@test postgresql-14.6]# mkdir /usr/local/geos

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/geos

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/geos-3.6.6

[postgres@test geos-3.6.6]$ make && make install

安装 proj
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ tar -xvf proj-8.2.1.tar.gz

3、安装

[postgres@test soft]$ cd proj-8.2.1

[postgres@test proj-8.2.1]$ ./configure --prefix=/usr/local/proj

......

enabled, pthread

checking for SQLITE3... configure: error: Package requirements (sqlite3 >= 3.11) were not met:

No package 'sqlite3' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you

installed software in a non-standard prefix.

Alternatively, you may set the environment variables SQLITE3_CFLAGS

and SQLITE3_LIBS to avoid the need to call pkg-config.

See the pkg-config man page for more details.

proj8 对于 sqlite 数据库有版本要求,重新安装 sqlite 数据库

sqlite下载地址:

SQLite Download Page

上传并安装

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

[postgres@test soft]$ tar -xvf sqlite-autoconf-3410000.tar.gz

[postgres@test soft]$ cd sqlite-autoconf-3410000

[postgres@test sqlite-autoconf-3410000]$ ./configure --prefix=/usr/local/sqlite

[postgres@test sqlite-autoconf-3410000]$ exit

[root@test postgresql-14.6]# mkdir /usr/local/sqlite

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/sqlite-autoconf-3410000

[postgres@test sqlite-autoconf-3410000]$ make && make install

修改链接

[root@test postgresql-14.6]# cd /usr/bin/

[root@test postgresql-14.6]# mv sqlite3 sqlite3_old

[root@test postgresql-14.6]# ln -s /usr/local/sqlite/bin/sqlite3 sqlite3

继续安装 proj

[root@test postgresql-14.6]$ su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/proj-8.2.1

[postgres@test proj-8.2.1]$ ./configure --prefix=/usr/local/proj

......

checking for sqlite3... yes

checking for TIFF... configure: error: Package requirements (libtiff-4) were not met:

No package 'libtiff-4' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you

installed software in a non-standard prefix.

Alternatively, you may set the environment variables TIFF_CFLAGS

and TIFF_LIBS to avoid the need to call pkg-config.

See the pkg-config man page for more details.

报错找不到 libtiff-4 包,服务器已经安装了

[postgres@test proj-8.2.1]$ rpm -qa libtiff

libtiff-4.0.3-35.el7.x86_64

尝试安装开发包,发现可以解决问题

[root@test postgresql-14.6]# yum install libtiff-devel

继续安装 proj

[postgres@test proj-8.2.1]# ./configure --prefix=/usr/local/proj

.....

checking for SQLITE3... yes

checking for sqlite3... yes

checking for TIFF... yes

checking for curl-config... not-found

configure: error: curl not found. If wanting to do a build without curl support (and thus without built-in networking capability), explictly disable it with --without-curl

报错缺少 curl 包

[root@test postgresql-14.6]# yum install curl

继续安装 proj

[postgres@test proj-8.2.1]# ./configure --prefix=/usr/local/proj

[postgres@test proj-8.2.1]# exit

[root@test postgresql-14.6]# mkdir /usr/local/proj

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/proj

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/proj-8.2.1

[postgres@test ~]$ make && make install

安装 gdal
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ tar -xvf gdal-3.5.3.tar.gz

3、安装

[postgres@test soft]$ exit

[root@test postgresql-14.6]# mkdir /usr/local/gdal

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/gdal

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/gdal-3.5.3

[postgres@test gdal-3.5.3]# ./configure --prefix=/usr/local/gdal

......

checking for curl_global_init in -lcurl... yes

checking for SQLite3 library >= 3.0.0... disabled

checking for PROJ >= 6 library... checking for proj_create_from_wkt in -lproj... no

checking for internal_proj_create_from_wkt in -lproj... no

checking for internal_proj_create_from_wkt in -linternalproj... no

configure: error: PROJ 6 symbols not found

报错找不到 PROJ 包,添加环境变量到 /etc/profile 也不见效,选择手动指定proj安装目录的方式解决。

应该再尝试在 /etc/ld.so.conf 中配置库包位置试试

[postgres@test gdal-3.5.3]# ./configure --prefix=/usr/local/gdal --with-proj=/usr/local/proj/

[postgres@test gdal-3.5.3]# make && make install

安装 json-c
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ tar -xvf json-c-0.10.tar.gz

3、安装

[postgres@test soft]$ exit

[root@test postgresql-14.6]# mkdir /usr/local/jons-c

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/jons-c

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/json-c-0.10

[postgres@test json-c-0.10]$ ./configure --prefix=/usr/local/json-c

[postgres@test json-c-0.10]$ make && make install

安装 postgis
1、上传安装包

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

2、解压缩

[postgres@test soft]$ tar -xvf postgis-3.2.4.tar.gz

3、安装

[postgres@test postgis-3.2.4]# ./configure --prefix=/usr/local/postgis

......

checking libxml/xpathInternals.h usability... yes

checking libxml/xpathInternals.h presence... yes

checking for libxml/xpathInternals.h... yes

checking for xmlInitParser in -lxml2... yes

checking for geos-config... no

configure: error: could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter.

[postgres@test postgis-3.2.4]# ./configure --prefix=/usr/local/postgis --with-geosconfig=/usr/local/bin/geos-config

......

configure: WARNING: "Could not find json-c"

checking for PROTOBUFC... no

libprotobuf-c not found in pkg-config

checking protobuf-c/protobuf-c.h usability... no

checking protobuf-c/protobuf-c.h presence... no

checking for protobuf-c/protobuf-c.h... no

configure: error: unable to find protobuf-c/protobuf-c.h using CPPFLAGS. You can disable MVT and Geobuf support using --without-protobuf

报错找不到 protobuf-c 包,尝试使用 yum 安装,安装完成之后问题未解决

手动下载 protobuf-c 进行安装

安装 protobuf-c

下载地址

Releases · protobuf-c/protobuf-c · GitHub

上传并安装

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

[postgres@test soft]# tar -xvf protobuf-c-1.4.1.tar.gz

[postgres@test soft]$ exit

[root@test postgresql-14.6]# mkdir /usr/local/protobuf-c

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/protobuf-c

[root@test postgresql-14.6]# su - postgres

[postgres@test soft]# cd /opt/postgresql/soft/protobuf-c-1.4.1

[postgres@test protobuf-c-1.4.1]# ./configure --prefix=/usr/local/protobuf-c

......

checking whether g++ supports C++11 features with -std=c++11... yes

checking for protobuf... no

checking for protobuf... no

configure: error: Package requirements (protobuf >= 2.6.0) were not met:

No package 'protobuf' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you

installed software in a non-standard prefix.

Alternatively, you may set the environment variables protobuf_CFLAGS

and protobuf_LIBS to avoid the need to call pkg-config.

See the pkg-config man page for more details.

protobuf-c 依赖与 protobuf 包,需要先安装 protobuf 包

安装 protobuf 包

https://github.com/google/protobuf/releases

上传并安装

[postgres@test ~]$ cd /opt/postgresql/soft

[postgres@test soft]$ rz

[postgres@test soft]# tar -xvf protobuf-all-3.6.1.tar.gz

[postgres@test soft]$ exit

[root@test postgresql-14.6]# mkdir /usr/local/protobuf

[root@test postgresql-14.6]# chown postgres:postgres /usr/local/protobuf

[root@test postgresql-14.6]# su - postgres

[postgres@test ~]$ cd /opt/postgresql/soft/protobuf-3.6.1

[postgres@test protobuf-c-1.4.1]$ ./configure --prefix=/usr/local/protobuf

[postgres@test protobuf-c-1.4.1]$ make && make install

继续安装 protobuf-c

[postgres@test protobuf-c-1.4.1]$ ./configure --prefix=/usr/local/protobuf-c

[postgres@test protobuf-c-1.4.1]$ make && make install

继续安装 postgis

[postgres@test postgis-3.2.4]$ ./configure --prefix=/usr/local/postgis --with-geosconfig=/usr/local/bin/geos-config

如果还报 protobuf-c 找不到的问题,把 protobuf-c 的库加入到环境变量中去

vim /etc/profile

export LD_LIBRARY_PATH=/usr/local/protobuf/lib:$LD_LIBRARY_PATH

[postgres@test postgis-3.2.4]$ make && make install

postgresql 接入 postgis 扩展
1、创建一个数据库

[postgres@test ~]$ psql

gisdb=# create database gisdb;

2、加载 postgis 插件

gisdb=# create extension postgis;

ERROR: could not load library "/usr/local/pgsql-14.6/lib/postgis-3.so": libgeos_c.so.1: cannot open shared object file: No such file or directory

将所安装的软件库都加入到共享库解决上述问题

[root@test ~]# vim /etc/ld.so.conf

/usr/local/gdal/lib

/usr/local/geos/lib

/usr/local/proj/lib

/usr/local/pgsql/lib

/usr/local/json-c/lib

/usr/local/libxml2/lib

/usr/local/protobuf/lib

/usr/local/protobuf-c/lib

[root@test ~]# ldconfig

gisdb=# create extension postgis;

CREATE EXTENSION


至此安装完成




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端(六)浮动流

浮动流 文章目录 浮动流一、标准流二、浮动流 一、标准流 所谓网页布局就是网页排版的方式&#xff0c;css中有三种网页布局的方式&#xff1a;标准流、浮动流和定位流。 标准流也称文档流&#xff0c;这是浏览器默认的排版方式。标准流中网页的元素会按从左往右、从上往下的…

双内核架构 Xenomai 4 安装教程

Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点&#xff0c;通过在Linux内核中嵌入一个辅助核心&#xff08;companion core&#xff09;&#xff0c;来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。 本文将在官网教程(https://evlproject.org/…

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性&#xff0c;允许你通过…

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 接口收发包的类比1.1 获取对方地址&#xff08;填写接口URL&#xff09;1.2 选择快递公司&#xff08;设置HTTP方法&#xff09;1.3 填写快递单&#xff08;设置请求头域&#…

数据链路层(Java)(MAC与IP的区别)

以太网协议&#xff1a; "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理 层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等; 例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等; 以太…

SpringBoot2+Vue2开发工作管理系统

项目介绍 在工作中使用的管理系统&#xff0c;可以随手记录一些笔记、可以汇总一些常用网站的链接、可以管理自己负责的项目、可以记录每日日报和查看历史日报、可以记录加班情况、可以记录报销内容、可以编写文章文档。 系统功能 我的笔记快捷入口项目管理今日日报我的日报…

软考中级-软件设计师通过心路经验分享

执念&#xff0c;第四次终于通过了 没买书&#xff0c;下班后每天2小时&#xff0c;四个2个月终于过了 学习经验&#xff1a; 1.下班后学习真的靠毅力&#xff0c;和上学的时候考证不是一个状态&#xff0c;大家要及时调整&#xff0c;否则过程很痛苦 2.失败三次的经验&#xf…

burp(2)利用java安装burpsuite

BurpSuite安装 burpsuite 2024.10专业版&#xff0c;已经内置java环境&#xff0c;可以直接使用&#xff0c; 支持Windows linux macOS&#xff01;&#xff01;&#xff01; 内置jre环境&#xff0c;无需安装java即可使用&#xff01;&#xff01;&#xff01; bp2024.10下载…

el-table 动态计算合并行

原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …

【Tomcat】第二站:Tomcat通过反射机制运行项目

目录 前言 1. 动态资源&静态资源 1.1 为什么要区分&#xff1f; 1.2 静态资源 1.3 动态资源 1.4 如何判断 2. Tomcat优先动态 2.1 原因 3. Tomcat运行项目的流程 前言 我们在写项目时&#xff0c;在进行前后端交互时&#xff0c;都会创建一个servlet&#xff0c;然…

vue canvas 绘制选定区域 矩形框

客户那边文档相当的多&#xff0c;目前需要协助其将文档转为数据写入数据库&#xff0c;并与其他系统进行数据共享及建设&#xff0c;所以不得不搞一个识别的功能&#xff0c;用户上传PDF文档后&#xff0c;对于关键信息点进行识别入库&#xff01; 以下为核心代码&#xff0c…

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用&#xff08;一&#xff09;精准定位元素&#xff08;二&#xff09;应对动态网页&#xff08;三&#xff09;数据结构化提取 二、Xpath 的常用方法&#xff08;一&#xff09;节点选取&#xff08;二&#xff09;谓词筛选&#xff0…

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中&#xff0c;笔者分析了Spark SQL 执行计划的解析&#xff0c;很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行&#xff0c;每个概念之间没有强烈的关联&#xff0c;因此这中间总感觉少了点…

java抽奖系统登录下(四)

6.4 关于登录 最简单的登录&#xff1a; 1、web登录页填写登录信息&#xff0c;前端发送登录信息到后端&#xff1b; 2、后端接受登录信息&#xff0c;并校验。校验成功&#xff0c;返回成功结果。 这种登录会出现一个问题&#xff0c;用户1成功登录之后&#xff0c;获取到后台…

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…

【传感器技术】第6章 压电式传感器,压电材料,压电效应,电压放大器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

AI 智能体(AI Agent)到底什么原理?能干什么事情

智能体应用有哪些&#xff1f; 智能体在千行百业中有着广泛的应用&#xff0c;目前已经在 600 多个项目落地和探索&#xff0c;广泛应用于政府与公共事业、交通、工业、能源、金融、医疗、科研等行业。智能体是模拟人类智能的计算机系统&#xff0c;能自主感知环境、智能决策并…

力扣-图论-12【算法学习day.62】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…