我已经多次安装了PostgreSQL 9.x和PostGIS 1.5 / 2.0,并且从未遇到过这个问题。

我刚刚启动并运行了一个新的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和创建扩展之间的任何步骤。

我缺少什么?

评论

您缺少的是“ 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文件中)以手动空间化数据库。向打包程序报告丢失的控制文件,这是一个大问题。

#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*不是必需的,因为它安装了一些并非严格要求的软件包使其正常工作。

所需的软件包是postgispostgresql-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.5postgis

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查询。