Running Create Extension postgis gives ERROR could not open extension control file?
I just had the same problem on Ubuntu Server 14.04.
I installed the postgis
extension from the official Ubuntu repositories using apt-get install postgis
.
Then, find /usr -name postgis.control
didn't return any results.
The reason was extension/postgis.control
wasn't installed because postgis-scripts wasn't.
$ 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
The solution is to install it.
On debian-like distros:
apt-get install postgis*
The aptitude package manager will automatically determine the correct package versions to install. The postgis-doc will be installed too.
EDIT
Like some people noticed in comments, the
postgis*
is not required because it installs some packages not strictly required to just get it to work.The required packages are
postgis
andpostgresql-9.x-postgis-scripts
meta packages. They select the correct real version for your system. So the commands to install the required packages are$ sudo apt-get install postgis postgresql-9.3-postgis-scripts
for
postgresql-9.3
. Ubuntu16.04
runspostgresql-9.5
so the command becomes:$ sudo apt-get install postgis postgresql-9.5-postgis-scripts
You can check the success of the operation by running the following command:
find /usr -name postgis.control
On my server, it now returns:
/usr/share/postgresql/9.3/extension/postgis.control
You can now enable the extension on any database on your postgres server:
- connect to your db with superuser (postgres by default)
- run
CREATE EXTENSION postgis;
Your public schema now contains all postgis objects and functions.
In Ubuntu 14.04 you also need to install the postgresql-9.3-postgis-scripts
package. After I ran
sudo apt-get install postgis postgresql-9.3-postgis-scripts
I was then able to successfully run
CREATE EXTENSION postgis;
in my database to initialise PostGIS.
If you can find a postgis.sql file, you can run that into your database (and the spatial_ref_sys.sql file) to manually spatialize your database. Report the missing control file to the packager, that's a big problem.