我只是在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对象和函数。