Wenn Sie Create Extension postgis ausführen, kann ERROR die Erweiterungssteuerungsdatei nicht öffnen.


51

Ich habe PostgreSQL 9.x und PostGIS 1.5 / 2.0 mehrmals installiert und hatte dieses Problem noch nie.

Ich habe gerade einen neuen CentOS 6.3-Server in Betrieb genommen und Postgres 9.3 funktioniert wie erwartet. ich bin gerannt

yum install postgis2_93

und ich kann die dateien in sehen

/usr/pgsql-9.3/share/contrib/

aber wenn ich renne

CREATE EXTENSION postgis;

ich erhalte

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

Die Tutorials ( # 1 , # 2 ), die ich verwendet habe, zeigen keine Schritte zwischen der Installation von PostGIS und dem Erstellen der Erweiterung.

Was vermisse ich?


Was Sie vermissen, ist 'postgis.control' :) Die Frage ist 'warum' oder 'wo'. Überprüfen Sie zunächst, ob Sie überhaupt eine Kopie haben, indem Sie 'find / usr -name postgis.control' ausführen. Andernfalls liegt ein Verpackungsproblem mit dem brandneuen Paket postgis2_93 vor, das behoben werden muss.
Paul Ramsey

Oh, Sie können die Dateien (einschließlich 'postgis.control'?) Share / contrib sehen, aber von der Fehlermeldung sieht pgsql in share / extension aus. Möglicherweise wurde der Standardspeicherort für Erweiterungen von 9.2 auf 9.3 geändert, den der Packager verpasst hat.
Paul Ramsey

@ PaulRamsey - Ich lief find /usr -name postgis.controlund es ist nicht vorhanden. Ich kann einige Dateien in share / contrib sehen. postgis.control gehört jedoch nicht dazu ... was schlägst du vor, was ich tue? Warten Sie auf eine Lösung, machen Sie meine eigene, etwas anderes?
Losthorse

@PaulRamsey - Ich habe gerade überprüft, ob postgis-2.1.soin vorhanden ist. Bedeutet /libdies, dass ich nur meine eigene postgis.control-Datei erstellen kann?
Losthorse

Wenn Sie eine postgis.sql-Datei finden, können Sie diese in Ihre Datenbank (und die Datei "spatial_ref_sys.sql") ausführen, um Ihre Datenbank manuell zu räumlich zu gestalten. Melden Sie die fehlende Steuerdatei dem Packager, das ist ein großes Problem.
Paul Ramsey

Antworten:


12

Wenn Sie eine postgis.sql-Datei finden, können Sie diese in Ihre Datenbank (und die Datei "spatial_ref_sys.sql") ausführen, um Ihre Datenbank manuell zu räumlich zu gestalten. Melden Sie die fehlende Steuerdatei dem Packager, das ist ein großes Problem.


54

Ich hatte gerade das gleiche Problem auf Ubuntu Server 14.04. Ich habe die postgisErweiterung aus den offiziellen Ubuntu-Repositories mit installiert apt-get install postgis.

Dann gab find /usr -name postgis.controles keine Ergebnisse.

Der Grund wurde extension/postgis.controlnicht installiert, weil es keine Postgis-Skripte gab.

$ 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 

Die Lösung ist, es zu installieren.

In debian-ähnlichen Distributionen:

apt-get install postgis*

Der aptitude Paketmanager ermittelt automatisch die richtigen zu installierenden Paketversionen. Das postgis-doc wird ebenfalls installiert.

BEARBEITEN

Wie einige Leute in Kommentaren bemerkt haben, postgis*ist das nicht erforderlich, da es einige Pakete installiert, die nicht unbedingt erforderlich sind, um es einfach zum Laufen zu bringen.

Die erforderlichen Pakete sind postgisund postgresql-9.x-postgis-scriptsMetapakete. Sie wählen die richtige echte Version für Ihr System. Die Befehle zum Installieren der erforderlichen Pakete lauten also

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

für postgresql-9.3. Ubuntu 16.04läuft postgresql-9.5so der Befehl wird:

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

Sie können den Erfolg der Operation überprüfen, indem Sie den folgenden Befehl ausführen:

find /usr -name postgis.control

Auf meinem Server wird jetzt Folgendes zurückgegeben:

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

Sie können die Erweiterung jetzt für jede Datenbank auf Ihrem Postgres-Server aktivieren:

  • verbinde dich mit deinem Superuser zu deiner Datenbank (standardmäßig postgres)
  • Lauf CREATE EXTENSION postgis;

Ihr öffentliches Schema enthält jetzt alle Postgis-Objekte und -Funktionen.


... wünschte, Sie hätten auch Windows-Richtung
CodyBugstein

...keine Ursache! Es wurde in Windows behoben, indem PostGIS über StackBuilder
CodyBugstein

4
Danke das mein Ubuntu Problem behoben ist! Das "Postgis *" bekommt ein paar Sachen, die du nicht brauchst. Ich halte "apt-get install postgis postgresql-9.3-postgis-2.1" für ausreichend.
Nelson

Du hast wahrscheinlich Recht. In meinem Fall war eine vollständige Installation vorzuziehen, dies ist jedoch nicht die Regel.
Rémi B.

"apt-get install postgis *" - Regeln. Vielen Dank!
Nemesisdesign

18

In Ubuntu 14.04 müssen Sie auch das postgresql-9.3-postgis-scriptsPaket installieren . Nachdem ich gerannt bin

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

Ich konnte dann erfolgreich laufen

CREATE EXTENSION postgis;

in meiner Datenbank, um PostGIS zu initialisieren.



2

Eine andere Quelle, die das Problem verursacht hat, könnte das fehlende PostGIS-Bundle sein. Dies kann im Installationsmenü oder in Ihrem Fall nachträglich definiert werden. Öffnen Sie dazu Windows, gehen Sie zu PostgreSQL und starten Sie den Application Stack Builder . Dann wählen Sie PostgreSQL, mit dem mögliche Anwendungen geladen werden. Für das PostGIS-Bundle müssen Sie nur die für Ihr Betriebssystem geeignete Erweiterung (32- oder 64-Bit) installieren, und zwar direkt bei Spatial Extensions .

Immerhin hier die empfohlenen Schritte:

  1. Starten Sie den Application Stack Builder
  2. Direkt zu räumlichen Erweiterungen
  3. Installieren Sie das PostGIS-Bundle

Jetzt können Sie die Erweiterung mit CREATE EXTENSION postgis;in Ihre SQL-Abfrage einfügen.


1

Ich bin auf das gleiche Problem gestoßen. Ich denke, das Problem ist, dass das Paket postgis2_93 nicht an der erwarteten Stelle installiert wird, wie es postgresql erwarten würde. Sie können versuchen, ein anderes Repo zu verwenden, wodurch Sie möglicherweise den richtigen Ort finden. Sie können auch suchen, um Erweiterungen manuell hinzuzufügen, indem Sie den Ort angeben. In meinem Fall ist die Datei in /usr/pgsql-9.4/


1

Ich hatte meinen schlimmsten Albtraum, als ich Postgis 2.X auf SLES 12 SP1 installiert habe. welches nicht kompatibles Paket in Zypper Repo hat

Hier ist, wie es auf meiner Postgres-Server-Instanz unter 9.4.X behoben wird

Vorausgesetzte Pakete, die ich vor PostGis aufgrund der Fehler installiert habe

  1. Proj 4 Downloadquelle kalt, Build -> make install
  2. Installieren Sie Gdal andjibson, indem Sie zypper repo hinzufügen. zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper installiere gdal gdal-devel libjson-c-devel libjson

Postgis installieren

Nun, wenn Sie zum Postgress gehen und eine Erweiterung für Postgis erstellen. wird funktionieren

Wichtig bei der Konfiguration sollten Sie den Pfad pg-config und den Pfad geosconfig angeben und NICHT "ohne Raster" einschließen, da RASTER bei der Erstellung der Erweiterung postgis die Hauptrolle spielt


1

Führen Sie unter Ubuntu 16.04 den folgenden Befehl aus:

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

Beachten Sie, dass Sie Ihre Versionsnummer sowohl für postgresql (9.6 in meinem Fall) als auch für postgis (2.3 in meinem Fall) angeben sollten .


0

Wenn Sie brew verwenden, deinstallieren Sie PostGIS und installieren Sie es erneut. Dadurch werden die Erweiterungsdateien erstellt.


Das hat bei mir nicht funktioniert, obwohl ich sie in zu sehenbrew ls --verbose postgis
dps

0

Bei einigen Distributionen werden die Erweiterungen im postgresql-contrib-Paket gepackt. Dies gilt mit Sicherheit für RedHat / CenOS, wo die Erweiterungen in postgresql-contrib sind, wobei xx die Magor- und Minor-Release-Nummern ohne Punkt ist (postgresql95-contrib für postgres 9.5).


0

Mit Fedora 25 und Seite 9.5 hat es funktioniert, als ich die folgenden Änderungen vorgenommen habe:

  • Installieren Sie Ihr Postgis-Paket

    $ yum installiere postgis2_95

  • Laden Sie das .deb-Paket für die Postgis-Skripte herunter

  • Extrahieren Sie es und kopieren Sie die Verzeichnisse 'contrib' und 'extension' in das entpackte Verzeichnis usr / share / postgresql / 9.5 in denselben Pfad in Ihrer pgsql (möglicherweise ändern Sie die Berechtigungen in).

  • Starten Sie den Server neu


0

In meinem Fall (Linux Mint 18.1 Serena) musste ich das Standard-Repository entfernen posgresql-9.5und postgisneu installieren.

sudo apt remove postgis*
sudo apt remove postgresql*

Und installieren Sie die Version 9.6 aus dem PosgreSQL-Repository :

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

Ich bin nicht sicher, Version hat etwas mit fehlender postgis.controlDatei zu tun . Ich wollte aber trotzdem die 9.6 Version.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.