L'esecuzione di Crea estensione postgis dà a ERRORE impossibile aprire il file di controllo delle estensioni?


51

Ho installato PostgreSQL 9.xe PostGIS 1.5 / 2.0 più volte e non ho mai avuto questo problema.

Ho appena installato un nuovo server CentOS 6.3 e ho Postgres 9.3 che funziona come previsto. Ho corso

yum install postgis2_93

e posso vedere i file in

/usr/pgsql-9.3/share/contrib/

tuttavia, quando corro

CREATE EXTENSION postgis;

ricevo

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

i tutorial ( # 1 , # 2 ) che ho usato non mostrano alcun passaggio tra l'installazione di PostGIS e la creazione dell'estensione.

Cosa mi sto perdendo?


Quello che ti manca è 'postgis.control' :) La domanda è 'perché' o 'dove'. Per prima cosa, controlla se hai anche una copia eseguendo 'find / usr -name postgis.control'. In caso contrario, è un problema di imballaggio con il nuovissimo pacchetto postgis2_93 che deve essere risolto.
Paul Ramsey,

Oh, puoi vedere i file (incluso 'postgis.control'?) Share / contrib, ma dal messaggio di errore pgsql sta cercando in share / extension. Potrebbe essersi verificato un cambiamento nella posizione dell'estensione predefinita da 9.2 a 9.3 che il packager ha perso.
Paul Ramsey,

@PaulRamsey - Ho corso find /usr -name postgis.controle non è presente. Riesco a vedere alcuni file in share / contrib; tuttavia, postgis.control non è tra questi ... cosa mi consigliate di fare? aspettare una correzione, fare il mio, qualcos'altro?
losthorse,

@PaulRamsey - Ho appena verificato che postgis-2.1.soè presente in /libquesto significa che posso semplicemente creare il mio file postgis.control?
Cavallo perduto,

Se riesci a trovare un file postgis.sql, puoi eseguirlo nel tuo database (e nel file spatial_ref_sys.sql) per spazializzare manualmente il tuo database. Segnala il file di controllo mancante al packager, questo è un grosso problema.
Paul Ramsey,

Risposte:


12

Se riesci a trovare un file postgis.sql, puoi eseguirlo nel tuo database (e nel file spatial_ref_sys.sql) per spazializzare manualmente il tuo database. Segnala il file di controllo mancante al packager, questo è un grosso problema.


54

Ho avuto lo stesso problema su Ubuntu Server 14.04. Ho installato l' postgisestensione dai repository Ubuntu ufficiali usando apt-get install postgis.

Quindi, find /usr -name postgis.controlnon ha restituito alcun risultato.

Il motivo non è extension/postgis.controlstato installato perché Postgis-script non lo era.

$ 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 soluzione è installarlo.

Su distro simili a debian:

apt-get install postgis*

Il gestore pacchetti aptitude determinerà automaticamente le versioni corrette del pacchetto da installare. Postgis-doc verrà installato anche.

MODIFICARE

Come alcune persone hanno notato nei commenti, postgis*non è necessario perché installa alcuni pacchetti non strettamente necessari per farlo funzionare.

I pacchetti richiesti sono postgise postgresql-9.x-postgis-scriptsmeta-pacchetti. Selezionano la versione reale corretta per il tuo sistema. Quindi sono i comandi per installare i pacchetti richiesti

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

per postgresql-9.3. Ubuntu 16.04funziona postgresql-9.5quindi il comando diventa:

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

È possibile verificare la riuscita dell'operazione eseguendo il comando seguente:

find /usr -name postgis.control

Sul mio server, ora restituisce:

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

Ora puoi abilitare l'estensione su qualsiasi database sul tuo server Postgres:

  • connettiti al tuo db con superutente (postgres di default)
  • correre CREATE EXTENSION postgis;

Il tuo schema pubblico ora contiene tutti gli oggetti e le funzioni di Postgis.


... vorrei avere anche la direzione di Windows
CodyBugstein,

...non importa! Risolto in Windows reinstallando PostGIS tramite StackBuilder
CodyBugstein

4
Grazie questo risolto il mio problema con Ubuntu! "Postgis *" riceve un sacco di cose che non ti servono. Penso che "apt-get install postgis postgresql-9.3-postgis-2.1" sia sufficiente.
Nelson,

Probabilmente hai ragione. Nel mio caso, era preferibile un'installazione completa ma non è la regola.
Rémi B.,

Regole "apt-get install postgis *". Grazie!
nemesisdesign,

18

In Ubuntu 14.04 è inoltre necessario installare il postgresql-9.3-postgis-scriptspacchetto. Dopo che ho corso

sudo apt-get install postgis postgresql-9.3-postgis-script

Sono stato quindi in grado di correre con successo

CREA ESTENSIONE postgis;

nel mio database per inizializzare PostGIS.



2

Un'altra fonte che ha causato il problema potrebbe essere il pacchetto PostGIS mancante, che può essere definito nel menu di installazione o nel tuo caso in seguito. Quindi, apri windows start, vai su PostgreSQL e avvia Application Stack Builder . Quindi selezionare PostgreSQL, con che vengono caricate le possibili applicazioni. Per il pacchetto PostGIS devi solo installare l'estensione adatta al tuo sistema operativo (32 o 64 bit), semplicemente diretta alle estensioni spaziali .

Dopo tutto qui i passaggi consigliati:

  1. avvia Application Stack Builder
  2. Diretto alle estensioni spaziali
  3. Installa il pacchetto PostGIS

Ora puoi aggiungere l'estensione con CREATE EXTENSION postgis;nella tua query SQL.


1

Ho riscontrato lo stesso problema, penso che il problema sia che il pacchetto postgis2_93 non sia installato nella posizione prevista come Postgresql si aspetterebbe. Puoi provare a utilizzare un altro repository, che potrebbe darti il ​​posto giusto. Oppure puoi cercare di aggiungere manualmente le estensioni specificando il luogo. Nel mio caso, il file è in /usr/pgsql-9.4/


1

Ho avuto il mio peggior incubo durante l'installazione di Postgis 2.X su SLES 12 SP1. che non ha un pacchetto compatibile nel repository zypper

Ecco come viene risolto sull'istanza del mio server Postgres con 9.4.X.

Pacchetti prerequsite che ho installato prima di PostGis in base agli errori

  1. Proj 4 Scarica sorgente fredda, Build -> make install
  2. installa Gdal andjibson aggiungendo zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper installa gdal gdal-devel libjson-c-devel libjson

Installare Postgis

ora se vai a postgress e crei postgis di estensione; funzionerà

Importante durante la configurazione è necessario specificare il percorso pg-config e il percorso geosconfig e NON DOVREBBE includere "senza raster" poiché RASTER svolge un ruolo principale nella creazione dell'estensione postgis


1

Per Ubuntu 16.04 esegui questo comando:

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

nota che dovresti specificare il tuo numero di versione sia per postgresql (9.6 nel mio caso) sia per postgis (2.3 nel mio caso).


0

Se si utilizza brew, disinstallare PostGIS e reinstallarlo. Questo creerà i file di estensione.


Questo non ha funzionato per me, anche se li vedo inbrew ls --verbose postgis
dps il

0

In alcune distribuzioni le estensioni vengono impacchettate nel pacchetto postgresql-contrib. Questo è certamente vero su RedHat / CenOS dove le estensioni sono in postgresql-contrib dove xx è il magor e numeri di rilascio minori senza il punto (postgresql95-contrib per postgres 9.5).


0

Per me, usando Fedora 25 e pag 9.5, ha funzionato quando ho fatto le seguenti modifiche:

  • Installa il pacchetto yum postgis

    $ yum installa postgis2_95

  • Scarica il pacchetto .deb degli script postgis

  • Estrai e copia le directory 'contrib' e 'extension' in usr / share / postgresql / 9.5 estratti nello stesso percorso in pgsql (magari cambiando le autorizzazioni in).

  • Riavvia il server


0

Nel mio caso (Linux Mint 18.1 Serena) ho dovuto rimuovere posgresql-9.5e postgisappena installato dal repository predefinito.

sudo apt remove postgis*
sudo apt remove postgresql*

E installa la versione 9.6 dal repository PosgreSQL :

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

Non sono sicuro, la versione ha qualcosa a che fare con il postgis.controlfile mancante . Ma volevo comunque la versione 9.6.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.