运行Create Extension postgis给出错误,无法打开扩展控制文件?


51

我已经多次安装了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-我跑了find /usr -name postgis.control,它不存在。我可以在share / contrib中看到一些文件;但是,postgis.control不在其中...您建议我做什么?等待修复,自己做,还有其他事情吗?
失落的马

@PaulRamsey-我刚刚验证了其中postgis-2.1.so的存在,/lib这是否意味着我可以制作自己的postgis.control文件?
失落的马

如果可以找到postgis.sql文件,则可以将其运行到数据库中(和spatial_ref_sys.sql文件),以手动对数据库进行空间化。向打包程序报告缺少的控制文件,这是一个大问题。
Paul Ramsey 2013年

Answers:


12

如果可以找到postgis.sql文件,则可以将其运行到数据库中(和spatial_ref_sys.sql文件),以手动对数据库进行空间化。向打包程序报告缺少的控制文件,这是一个大问题。


54

我只是在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年

...没关系!在Windows中通过StackBuilder重新安装PostGIS解决了该问题
CodyBugstein 2014年

4
谢谢,这解决了我的Ubuntu问题!“ postgis *”会得到一堆您不需要的东西。我认为“ apt-get install postgis postgresql-9.3-postgis-2.1”就足够了。
尼尔森2014年

你也许是对的。就我而言,完全安装是可取的,但这不是规则。
雷米B.

“ apt-get install postgis *”规则。谢谢!
nemesisdesign

18

在Ubuntu 14.04中,您还需要安装该postgresql-9.3-postgis-scripts软件包。我跑完之后

须藤apt-get install postgis postgresql-9.3-postgis-scripts

这样我就可以成功运行

创建扩展postgis;

在我的数据库中初始化PostGIS。



2

导致该问题的另一个来源可能是缺少PostGIS软件包,可以在安装菜单中定义,也可以在以后的情况中进行定义。为此,请打开Windows,然后启动PostgreSQL,然后启动Application Stack Builder。然后选择 PostgreSQL,并加载可能的应用程序。对于PostGIS软件包,您只需安装适用于您的操作系统(32位或64位)的扩展程序,只需直接指向Spatial Extensions即可

毕竟这里是推荐的步骤:

  1. 启动应用程序堆栈生成器
  2. 直接到空间扩展
  3. 安装PostGIS包

现在,您可以CREATE EXTENSION postgis;在SQL查询中添加扩展名。


1

我遇到了同样的问题,我认为问题在于未将postgis2_93软件包安装在postgresql所期望的位置。您可以尝试使用其他存储库,这可能会为您提供正确的位置。或者,您可以通过指定位置来搜索以手动添加扩展名。就我而言,该文件位于/usr/pgsql-9.4/


1

在SLES 12 SP1上安装Postgis 2.X时,我遇到了最糟糕的噩梦。zypper回购中没有兼容的软件包

这是在运行9.4.X的Postgres服务器实例上解决该问题的方法

根据错误我在PostGis之前安装了Prerequsite软件包

  1. Proj 4下载源代码Cold,Build-> make install
  2. 通过添加zypper repo来安装Gdal andjibson zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper安装gdal gdal-devel libjson-c-devel libjson

安装Postgis

现在,如果您转到postgress并创建扩展名postgis;将工作

在配置时,重要的是应指定pg-config路径和geosconfig路径,并且不应包含“ without Raster”,因为RASTER在创建postgis扩展中起主要作用


1

对于Ubuntu 16.04,请运行以下命令:

sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts

请注意,您应该同时为postgresql(在我的情况下为9.6)和postgis(在我的情况下为2.3 )指定版本号。


0

如果您使用brew,请卸载PostGIS并重新安装。这将创建扩展文件。


尽管我在brew ls --verbose postgis
dps

0

在某些发行版中,扩展被打包在postgresql-contrib软件包中。在RedHat / CenOS上,扩展名在postgresql-contrib中绝对正确,其中xx是主要的和次要的发行号,没有句号(对于postgres 9.5,则为postgresql95-contrib)。


0

对我来说,使用Fedora 25和pg 9.5,当我进行以下更改时它可以工作:

  • 安装yum postgis软件包

    $ yum安装postgis2_95

  • 下载postgis脚本.deb包

  • 解压缩它,然后将解压缩的usr / share / postgresql / 9.5中的目录“ contrib”和“ extension”复制到pgsql中的相同路径(可能更改权限)。

  • 重新启动服务器


0

就我而言(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版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.