L'exécution de Create Extension postgis donne à ERROR que le fichier de contrôle d'extension ne peut pas être ouvert?

51

J'ai installé plusieurs fois PostgreSQL 9.x et PostGIS 1.5 / 2.0 et je n'ai jamais eu ce problème.

Je viens tout juste d'avoir un nouveau serveur CentOS 6.3 en service et j'ai Postgres 9.3 qui fonctionne comme prévu. j'ai couru

yum install postgis2_93

et je peux voir les fichiers dans

/usr/pgsql-9.3/share/contrib/

cependant, quand je cours

CREATE EXTENSION postgis;

je reçois

ERROR:  could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory

les tutoriels ( n ° 1 , n ° 2 ) que j'ai utilisés ne montrent aucune étape entre l'installation de PostGIS et la création de l'extension.

Qu'est-ce que je rate?

Losthorse
la source
Ce qui vous manque, c'est "postgis.control" :) La question est de savoir "pourquoi" ou "où". Commencez par vérifier si vous en avez une copie en exécutant 'find / usr -name postgis.control'. Si vous ne le faites pas, le problème avec le tout nouveau paquet postgis2_93 doit être résolu.
Paul Ramsey
Oh, vous pouvez voir les fichiers (y compris 'postgis.control'?) Share / contrib, mais d'après le message d'erreur pgsql cherche dans share / extension. Il se peut que l'emplacement de l'extension par défaut de 9.2 à 9.3 ait été omis par le conditionneur.
Paul Ramsey
@ PaulRamsey - J'ai couru find /usr -name postgis.controlet ce n'est pas présent. Je peux voir des fichiers dans share / contrib; cependant, postgis.control n'est pas parmi eux ... que suggérez-vous que je fasse? attendre une solution, créer le mien, quelque chose d'autre?
Losthorse
@PaulRamsey - Je viens de vérifier que cela postgis-2.1.soest présent dans le système /libsignifie-t-il que je peux créer mon propre fichier postgis.control?
Losthorse
Si vous pouvez trouver un fichier postgis.sql, vous pouvez l'exécuter dans votre base de données (et le fichier spatial_ref_sys.sql) pour spatialiser manuellement votre base de données. Signalez le fichier de contrôle manquant au conditionneur, c'est un gros problème.
Paul Ramsey

Réponses:

12

Si vous pouvez trouver un fichier postgis.sql, vous pouvez l'exécuter dans votre base de données (et le fichier spatial_ref_sys.sql) pour spatialiser manuellement votre base de données. Signalez le fichier de contrôle manquant au conditionneur, c'est un gros problème.

Paul Ramsey
la source
54

Je viens d'avoir le même problème sur Ubuntu Server 14.04. J'ai installé l' postgisextension à partir des dépôts officiels d'Ubuntu à l'aide de apt-get install postgis.

Ensuite, find /usr -name postgis.controln'a renvoyé aucun résultat.

La raison en était extension/postgis.controlpas installé parce que postgis-scripts n'était pas.

$ 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 

La solution consiste à l'installer.

Sur les distributions de type debian:

apt-get install postgis*

Le gestionnaire de paquets d’aptitude déterminera automatiquement les versions correctes à installer. Le postgis-doc sera également installé.

MODIFIER

Comme certaines personnes l’ont remarqué dans les commentaires, la postgis*n’est pas obligatoire car elle installe certains paquets qui ne sont pas strictement nécessaires pour que cela fonctionne.

Les paquets nécessaires postgiset postgresql-9.x-postgis-scriptsméta - paquets. Ils sélectionnent la version réelle correcte pour votre système. Donc, les commandes pour installer les paquets requis sont

 $ sudo apt-get install postgis postgresql-9.3-postgis-scripts

pour postgresql-9.3. Ubuntu 16.04s'exécute postgresql-9.5pour que la commande devienne:

 $ sudo apt-get install postgis postgresql-9.5-postgis-scripts

Vous pouvez vérifier le succès de l'opération en exécutant la commande suivante:

find /usr -name postgis.control

Sur mon serveur, il retourne maintenant:

/usr/share/postgresql/9.3/extension/postgis.control

Vous pouvez maintenant activer l'extension sur n'importe quelle base de données sur votre serveur postgres:

  • connectez-vous à votre base de données avec superutilisateur (postgres par défaut)
  • courir CREATE EXTENSION postgis;

Votre schéma public contient maintenant tous les objets et fonctions postgis.

Rémi B.
la source
... souhaite que vous ayez aussi la direction de Windows
CodyBugstein
...ça ne fait rien! Résolu dans Windows en réinstallant PostGIS via StackBuilder
CodyBugstein
4
Merci cela a résolu mon problème Ubuntu! Le "postgis *" reçoit un tas de choses dont vous n'avez pas besoin. Je pense que "apt-get install postgis postgresql-9.3-postgis-2.1" est suffisant.
Nelson
Tu as probablement raison. Dans mon cas, une installation complète était préférable mais ce n’est pas la règle.
Rémi B.
Les règles "apt-get install postgis *". Merci!
Nemesisdesign
18

Dans Ubuntu 14.04, vous devez également installer le postgresql-9.3-postgis-scriptspaquet. Après j'ai couru

sudo apt-get installe postgis postgresql-9.3-postgis-scripts

J'ai ensuite pu exécuter avec succès

CREATE EXTENSION postgis;

dans ma base de données pour initialiser PostGIS.

Edward
la source
3

J'ai eu le même problème, je viens de lancer la commande

sudo apt-get install postgis

J'utilisais Ubuntu 18.04

Muhammad Fuzail Zubari
la source
merci beaucoup qui a résolu pour moi
Ibrahim Mohammed
pas de problème :) bienvenue!
Muhammad Fuzail Zubari
2

Une autre source à l'origine du problème pourrait être le bundle PostGIS manquant, que vous pouvez définir dans le menu d'installation ou ultérieurement dans votre cas. Par conséquent, ouvrez Windows, ouvrez PostgreSQL et lancez Application Stack Builder . Ensuite, sélectionnez PostgreSQL, avec cela les applications possibles sont chargées. Pour le bundle PostGIS, il vous suffit d'installer l'extension adaptée à votre système d'exploitation (32 ou 64 bits), directement vers Spatial Extensions .

Après tout, voici les étapes recommandées:

  1. démarrer Application Stack Builder
  2. Direct aux extensions spatiales
  3. Installer le bundle PostGIS

Vous pouvez maintenant ajouter l'extension CREATE EXTENSION postgis;dans votre requête SQL.

sqlmaster3000
la source
1

J'ai rencontré le même problème, je pense que le problème est que le paquet postgis2_93 n'est pas installé à l'emplacement prévu, comme Postgresql s'y attendrait. Vous pouvez essayer d’utiliser un autre repo, ce qui pourrait vous donner le bon emplacement. Ou vous pouvez chercher à ajouter des extensions manuellement en spécifiant le lieu. Dans mon cas, le fichier est dans /usr/pgsql-9.4/

Teinte
la source
1

J'ai eu mon pire cauchemar en installant Postgis 2.X sur SLES 12 SP1. qui n'a pas de paquet compatible dans le dépôt zypper

Voici comment le résoudre sur mon instance de serveur Postgres sous 9.4.X

Paquets pré-site que j'ai installés avant PostGis en fonction des erreurs

  1. Proj 4 Télécharger la source cold, Build -> make install
  2. installez Gdal andjibson en ajoutant zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper installer gdal gdal-devel libjson-c-devel libjson

Installer Postgis

maintenant, si vous allez postgress et créez une extension postgis; marchera

Important lors de la configuration, vous devez spécifier le chemin pg-config et le chemin geosconfig. Vous ne devez PAS inclure "sans Raster" car RASTER joue le rôle principal dans la création de l'extension postgis.

Pradeep B
la source
1

Pour Ubuntu 16.04, exécutez cette commande:

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

notez que vous devez spécifier votre numéro de version pour postgresql (9.6 dans mon cas) et postgis (2.3 dans mon cas).

Molhamaleh
la source
0

Si vous utilisez Brew, désinstallez PostGIS et réinstallez-le. Cela créera les fichiers d'extension.

James
la source
Cela n’a pas fonctionné pour moi, même si je les ai vusbrew ls --verbose postgis
dps
0

Sur certaines distributions, les extensions sont regroupées dans le paquet postgresql-contrib. Ceci est certainement vrai pour RedHat / CenOS où les extensions sont dans postgresql-contrib, où xx est le numéro de version majeur et mineur sans les arrêts complets (postgresql95-contrib pour postgres 9.5).

louigi600
la source
0

Pour moi, en utilisant Fedora 25 et la page 9.5, cela a fonctionné lorsque j'ai apporté les modifications suivantes:

  • Installez le paquet postgis yum

    $ yum install postgis2_95

  • Téléchargez le package .deb des scripts postgis

  • Extrayez-le et copiez les répertoires "contrib" et "extension" dans les fichiers extraits usr / share / postgresql / 9.5 vers le même chemin dans votre pgsql (en modifiant éventuellement les autorisations).

  • Redémarrer le serveur

Luiz Fernando da Silva
la source
0

Dans mon cas (Linux Mint 18.1 Serena), je devais supprimer posgresql-9.5et postgisinstaller à partir du référentiel par défaut.

sudo apt remove postgis*
sudo apt remove postgresql*

Et installez la version 9.6 à partir du référentiel PosgreSQL :

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

Je ne suis pas sûr, la version n'a rien à voir avec le postgis.controlfichier manquant . Mais je voulais quand même la version 9.6.

WooYek
la source