我刚刚启动并运行了一个新的CentOS 6.3服务器,并且Postgres 9.3的运行正常。我已经运行
yum install postgis2_93
,但是我可以在
/usr/pgsql-9.3/share/contrib/
看到文件,但是,当我运行
CREATE EXTENSION postgis;
我收到了
ERROR: could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory
我使用过的教程(#1,#2)没有显示安装PostGIS和创建扩展之间的任何步骤。
我缺少什么?
#1 楼
如果可以找到postgis.sql文件,则可以将其运行到数据库中(和spatial_ref_sys.sql文件中)以手动空间化数据库。向打包程序报告丢失的控制文件,这是一个大问题。#2 楼
我在Ubuntu Server 14.04上也遇到了同样的问题。我使用
postgis
从官方Ubuntu库安装了apt-get install postgis
扩展名。然后,
find /usr -name postgis.control
没有返回任何结果。原因是未安装
extension/postgis.control
,因为未安装postgis脚本。$ aptitude search postgis
i libpostgis-java - Geographic objects support for PostgreSQL -- JDBC support
i postgis - Geographic objects support for PostgreSQL
p postgis:i386 - Geographic objects support for PostgreSQL
i postgis-doc - Geographic objects support for PostgreSQL -- documentation
i postgresql-9.3-postgis-2.1 - Geographic objects support for PostgreSQL 9.3
p postgresql-9.3-postgis-2.1:i386 - Geographic objects support for PostgreSQL 9.3
i postgresql-9.3-postgis-2.1-scripts - PostGIS for PostgreSQL 9.3 -- scripts -- dummy package
i postgresql-9.3-postgis-scripts - Geographic objects support for PostgreSQL 9.3 -- scripts
解决方案是安装它。
在类似debian的发行版上:
apt-get install postgis*
aptitude软件包管理器将自动确定要安装的正确软件包版本。 postgis-doc也将被安装。
编辑
就像评论中注意到的某些人一样,
postgis*
不是必需的,因为它安装了一些并非严格要求的软件包使其正常工作。所需的软件包是
postgis
和postgresql-9.x-postgis-scripts
元软件包。他们为您的系统选择了正确的实际版本。因此,用于安装所需软件包的命令是
$ sudo apt-get install postgis postgresql-9.3-postgis-scripts
用于
postgresql-9.3
。 Ubuntu 16.04
运行postgresql-9.5
,因此命令变为: $ sudo apt-get install postgis postgresql-9.5-postgis-scripts
您可以通过运行以下命令来检查操作是否成功:
find /usr -name postgis.control
现在在我的服务器上返回:
/usr/share/postgresql/9.3/extension/postgis.control
现在,您可以在postgres服务器上的任何数据库上启用扩展名:
使用超级用户连接到数据库(默认为postgres)
运行
CREATE EXTENSION postgis;
您的公共架构现在包含所有postgis对象和功能。
评论
...希望您也有Windows指导
–科迪·布格斯坦(CodyBugstein)
2014-09-10 14:38
...没关系!在Windows中通过StackBuilder重新安装PostGIS解决了该问题
–科迪·布格斯坦(CodyBugstein)
2014-09-10 14:48
谢谢,这解决了我的Ubuntu问题! “ postgis *”会得到一堆您不需要的东西。我认为“ apt-get install postgis postgresql-9.3-postgis-2.1”就足够了。
–尼尔森
2014年12月2日19:15
你也许是对的。就我而言,完全安装是可取的,但这不是规则。
–RémiB.
2014年12月3日在8:35
“ apt-get install postgis *”规则。谢谢!
–nemesisdesign
15年6月6日在18:23
#3 楼
在Ubuntu 14.04中,您还需要安装postgresql-9.3-postgis-scripts
软件包。我运行sudo apt-get install postgis postgresql-9.3-postgis-scripts
我便能够成功运行
在我的数据库中创建扩展postgis;
以初始化PostGIS。
#4 楼
我遇到了同样的问题,我只运行了命令sudo apt-get install postgis
我正在使用Ubuntu 18.04
评论
非常感谢为我解决了这个问题
–易卜拉欣·穆罕默德(Ibrahim Mohammed)
19/09/15'6:10
没问题:)欢迎光临!
–穆罕默德·富扎伊尔·祖巴里(Muhammad Fuzail Zubari)
19/09/15在19:31
#5 楼
导致该问题的另一个来源可能是缺少PostGIS软件包,可以在安装菜单中定义此属性,也可以在以后的情况中进行定义。因此,打开Windows,启动PostgreSQL,然后启动Application Stack Builder。然后选择PostgreSQL,并加载可能的应用程序。对于PostGIS软件包,您只需要安装适合您的操作系统(32位或64位)的扩展程序,只需直接指向Spatial Extensions。
毕竟,这里推荐了以下步骤:
启动Application Stack Builder
直接使用空间扩展
安装PostGIS捆绑软件
现在您可以在SQL查询中添加带有
CREATE EXTENSION postgis;
的扩展。#6 楼
我遇到了同样的问题,我认为问题在于未将postgis2_93软件包安装在postgresql所期望的位置。您可以尝试使用其他存储库,这可能会为您提供正确的位置。或者,您可以通过指定位置来搜索以手动添加扩展名。就我而言,该文件位于/usr/pgsql-9.4/#7 楼
在SLES 12 SP1上安装Postgis 2.X时,我遇到了最糟糕的噩梦。在zypper repo中没有兼容的软件包这是在运行9.4.X的Postgres服务器实例上解决该问题的方法,我在基于PostGis之前安装的先决条件软件包错误
Proj 4下载源代码冷,构建->通过添加zypper repo进行安装
安装Gdal andjibson
zypper addrepo http://download.opensuse .org / repositories / Application:Geo / SLE_12_SP1_Backports / Application:Geo.repo
zypper install gdal gdal-devel libjson-c-devel libjson
安装Postgis
下载postgis源代码(http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz)
转到Post gis文件夹
./configure --with-pgconfig = / usr / lib / postgresql94 / bin / pg_config --with-geosconfig = / usr / local / bin / geos-config
制作
进行安装
现在是否要进入postgress并创建扩展名postgis;将有效
重要
在配置时,您应指定pg-config路径和geosconfig路径,并且不应包含“ without Raster”,因为RASTER在创建postgis扩展中起主要作用
#8 楼
对于Ubuntu 16.04,请运行以下命令:sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts
请注意,您应同时为postgresql(在我的情况下为9.6)和postgis(在我的情况下为2.3)指定版本号。
#9 楼
如果您使用brew,请卸载PostGIS并重新安装。这将创建扩展文件。评论
尽管我在brew ls --verbose postgis中看到了它们,但这对我没有用
–dps
19年6月18日在2:45
#10 楼
在某些发行版中,扩展被打包在postgresql-contrib软件包中。在RedHat / CenOS上确实如此,扩展名在postgresql-contrib中,其中xx是主要的和次要的发行号,没有句号(对于postgres 9.5,为postgresql95-contrib)。#11 楼
对我来说,使用Fedora 25和pg 9.5,可以在进行以下更改时工作:安装yum postgis软件包
$ yum install postgis2_95
下载postgis脚本.deb包
将其提取并将复制的usr / share / postgresql / 9.5中的目录“ contrib”和“ extension”复制到pgsql中的相同路径(可能将权限更改为)。
重新启动服务器
#12 楼
就我而言(Linux Mint 18.1 Serena),我必须从默认存储库中删除新安装的posgresql-9.5
和postgis
。sudo apt remove postgis*
sudo apt remove postgresql*
,然后从PosgreSQL存储库中安装版本9.6:
sudo apt install postgresql-9.6 postgresql-9.6-postgis-2.3 postgresql-9.6-postgis-2.3-scripts postgresql-contrib-9.6
我不确定,该版本与缺少
postgis.control
文件有关。但是我还是想要9.6版本。#13 楼
对于ubuntu 20.04,postgresql 13.1,运行sudo apt install postgis postgresql-13-postgis-3-scripts
。之后,您可以运行create extension postgis;
PostgreSQL查询。
评论
您缺少的是“ postgis.control” :)问题是“为什么”或“在哪里”。首先,通过运行'find / usr -name postgis.control'来查看是否有副本。如果不这样做,则是新的postgis2_93软件包的包装问题,需要修复。哦,您可以看到文件(包括'postgis.control'?)共享/贡献,但是从错误消息pgsql正在寻找共享/扩展名。打包程序错过的默认扩展位置可能已从9.2更改为9.3。
@PaulRamsey-我跑到/ usr -name postgis.control,它不存在。我可以在share / contrib中看到一些文件;但是,postgis.control不在其中...您建议我做什么?等待修复,自己动手做其他事情?
@PaulRamsey-我刚刚验证了/ lib中存在postgis-2.1.so,这是否意味着我可以制作自己的postgis.control文件?
如果可以找到postgis.sql文件,则可以将其运行到数据库中(和spatial_ref_sys.sql文件中)以手动空间化数据库。向打包程序报告丢失的控制文件,这是一个大问题。