Amazon Linux下PostgreSQL9.6安装PostGIS依赖错误求助
解决Amazon Linux上PostgreSQL 9.6安装PostGIS 2.4的依赖缺失问题
我之前在Amazon Linux上部署PostGIS时也碰到过几乎一模一样的依赖问题,给你几个可行的排查和解决方向:
1. 排查仓库优先级冲突
你看到的*23 packages excluded due to repository priority protections*是关键线索——pgdg96(PostgreSQL官方仓库)的优先级可能高于EPEL,导致yum优先从pgdg96寻找依赖,但这些依赖包并不在pgdg96仓库内。
- 先确认EPEL仓库已正常启用:
yum repolist enabled | grep epel - 调整仓库优先级:编辑
/etc/yum.repos.d/pgdg-96.repo,找到priority配置项(如果没有就新增一行),将其值设为比EPEL更高的数字(数字越小优先级越高,比如EPEL默认优先级是10,就把pgdg96的priority=20),这样yum会优先从EPEL获取所需依赖包。
2. 手动安装缺失的依赖包
尝试直接从EPEL和Amazon官方仓库安装报错中列出的依赖:
yum install libdap libdapserver cfitsio hdf5 freexl netcdf armadillo xerces-c poppler spatialite CharLS
如果部分包找不到,确认Amazon Linux的核心仓库(amzn-main和amzn-updates)已启用:
yum repolist enabled | grep amzn
若未启用,编辑/etc/yum.repos.d/amzn-main.repo和amzn-updates.repo,将enabled=0改为enabled=1即可。
3. 从源码编译PostGIS
如果仓库中的预编译包始终存在依赖兼容问题,从源码编译是最稳妥的解决方案:
- 先安装编译所需的基础依赖:
yum install postgresql96-devel gcc make proj-devel geos-devel libxml2-devel - 下载PostGIS 2.4.4源码并解压:
wget https://download.osgeo.org/postgis/source/postgis-2.4.4.tar.gz tar -xzf postgis-2.4.4.tar.gz cd postgis-2.4.4 - 配置编译参数并完成编译安装:
./configure --with-pgconfig=/usr/pgsql-9.6/bin/pg_config make && make install
4. 是否需要更换发行版?
如果上述方法都无法解决问题,换Ubuntu确实能大幅减少依赖适配的麻烦——Ubuntu官方仓库中PostgreSQL和PostGIS的版本匹配度更高,安装流程更顺畅。但如果不想迁移系统,源码编译的方法基本能解决所有依赖不兼容的问题,我当时就是靠这个方案搞定的。
内容的提问来源于stack exchange,提问作者sergpank




