Ejecutar Crear extensión postgis da ERROR ¿no se pudo abrir el archivo de control de extensión?

51

He instalado PostgreSQL 9.xy PostGIS 1.5 / 2.0 varias veces y nunca he tenido este problema.

Acabo de poner en funcionamiento un nuevo servidor CentOS 6.3 y tengo Postgres 9.3 funcionando como se esperaba. he corrido

yum install postgis2_93

y puedo ver los archivos en

/usr/pgsql-9.3/share/contrib/

sin embargo, cuando corro

CREATE EXTENSION postgis;

Recibo

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

los tutoriales ( # 1 , # 2 ) que he usado no muestran ningún paso entre instalar PostGIS y crear la extensión.

¿Qué me estoy perdiendo?

losthorse
fuente
Lo que te estás perdiendo es 'postgis.control' :) La pregunta es 'por qué' o 'dónde'. Primero, vea si incluso tiene una copia ejecutando 'find / usr -name postgis.control'. Si no lo hace, entonces es un problema de empaquetado con el nuevo paquete postgis2_93 que debe repararse.
Paul Ramsey
Ah, puedes ver los archivos (incluido 'postgis.control'?) Compartir / contrib, pero desde el mensaje de error pgsql está buscando en share / extension. Es posible que haya habido un cambio en la ubicación de extensión predeterminada de 9.2 a 9.3 que el empaquetador perdió.
Paul Ramsey
@PaulRamsey - Corrí find /usr -name postgis.controly no está presente. Puedo ver algunos archivos en share / contrib; sin embargo, postgis.control no está entre ellos ... ¿qué sugieres que haga? esperar una solución, hacer la mía, ¿otra cosa?
losthorse
@PaulRamsey: acabo de verificar que postgis-2.1.soestá presente, /lib¿significa que puedo crear mi propio archivo postgis.control?
Losthorse
Si puede encontrar un archivo postgis.sql, puede ejecutarlo en su base de datos (y el archivo spatial_ref_sys.sql) para espacializar manualmente su base de datos. Informe el archivo de control que falta al empaquetador, es un gran problema.
Paul Ramsey

Respuestas:

12

Si puede encontrar un archivo postgis.sql, puede ejecutarlo en su base de datos (y el archivo spatial_ref_sys.sql) para espacializar manualmente su base de datos. Informe el archivo de control que falta al empaquetador, es un gran problema.

Paul Ramsey
fuente
54

Acabo de tener el mismo problema en Ubuntu Server 14.04. Instalé la postgisextensión desde los repositorios oficiales de Ubuntu usando apt-get install postgis.

Entonces, find /usr -name postgis.controlno devolvió ningún resultado.

La razón extension/postgis.controlno se instaló porque postgis-scripts no.

$ 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 solución es instalarlo.

En distribuciones tipo debian:

apt-get install postgis*

El administrador de paquetes de aptitude determinará automáticamente las versiones correctas de paquetes para instalar. El postgis-doc también se instalará.

EDITAR

Como algunas personas notaron en los comentarios, postgis*no es obligatorio porque instala algunos paquetes que no son estrictamente necesarios para que funcione.

Los paquetes requeridos son postgisy postgresql-9.x-postgis-scriptsmetapaquetes. Seleccionan la versión real correcta para su sistema. Entonces los comandos para instalar los paquetes requeridos son

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

para postgresql-9.3. Ubuntu se 16.04ejecuta postgresql-9.5y el comando se convierte en:

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

Puede verificar el éxito de la operación ejecutando el siguiente comando:

find /usr -name postgis.control

En mi servidor, ahora devuelve:

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

Ahora puede habilitar la extensión en cualquier base de datos en su servidor postgres:

  • conectarse a su base de datos con superusuario (postgres por defecto)
  • correr CREATE EXTENSION postgis;

Su esquema público ahora contiene todos los objetos y funciones postgis.

Rémi B.
fuente
... desearía tener también la dirección de Windows
CodyBugstein
...¡no importa! Lo resolvió en Windows reinstalando PostGIS a través de StackBuilder
CodyBugstein
44
¡Gracias, esto solucionó mi problema de Ubuntu! El "postgis *" obtiene un montón de cosas que no necesitas. Creo que "apt-get install postgis postgresql-9.3-postgis-2.1" es suficiente.
Nelson
Probablemente tengas razón. En mi caso, una instalación completa era preferible pero no es la regla.
Rémi B.
Reglas "apt-get install postgis *". ¡Gracias!
nemesisdesign
18

En Ubuntu 14.04 también necesita instalar el postgresql-9.3-postgis-scriptspaquete. Después de correr

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

Entonces pude ejecutar con éxito

CREAR EXTENSIÓN postgis;

en mi base de datos para inicializar PostGIS.

Eduardo
fuente
3

Tuve el mismo problema, solo ejecuté el comando

sudo apt-get install postgis

Estaba usando Ubuntu 18.04

Muhammad Fuzail Zubari
fuente
muchas gracias que me resolvieron
Ibrahim Mohammed
no hay problema :) bienvenido!
Muhammad Fuzail Zubari
2

Otra fuente que causó el problema podría ser el paquete de PostGIS que falta, esto se puede definir en el menú de instalación o en su caso más adelante. Por lo tanto, abra el inicio de Windows, diríjase a PostgreSQL e inicie Application Stack Builder . Luego seleccione PostgreSQL, con las posibles aplicaciones cargadas. Para el paquete PostGIS solo necesita instalar la extensión adecuada para su sistema operativo (32 o 64 bits), simplemente directamente a Extensiones espaciales .

Después de todo aquí los pasos recomendados:

  1. iniciar Application Stack Builder
  2. Directo a extensiones espaciales
  3. Instalar paquete PostGIS

Ahora puede agregar la extensión con CREATE EXTENSION postgis;en su consulta SQL.

sqlmaster3000
fuente
1

Encontré el mismo problema, creo que el problema es que el paquete postgis2_93 no está instalado en el lugar esperado como postgresql esperaría. Puedes intentar usar otro repositorio, que podría darte el lugar correcto. O puede buscar agregar extensiones manualmente especificando el lugar. En mi caso, el archivo está en /usr/pgsql-9.4/

Matiz
fuente
1

Tuve mi peor pesadilla mientras instalaba Postgis 2.X en SLES 12 SP1. que no tiene paquete compatible en repositorio zypper

Así es como se resuelve en mi instancia de servidor Postgres que ejecuta 9.4.X

Paquetes de requisitos previos que he instalado antes de PostGis en función de los errores

  1. Proyecto 4 Descargar código fuente frío, Compilar -> hacer instalar
  2. instale Gdal y jibson agregando zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. instalar zypper gdal gdal-devel libjson-c-devel libjson

Instalar Postgis

ahora si va a postgress y crea postgis de extensión; trabajará

Importante durante la configuración, debe especificar la ruta pg-config y la ruta geosconfig y NO DEBE incluir "sin Raster", ya que RASTER juega un papel principal en la creación de la extensión postgis

Pradeep B
fuente
1

Para Ubuntu 16.04 ejecuta este comando:

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

tenga en cuenta que debe especificar su número de versión para postgresql (9.6 en mi caso) y postgis (2.3 en mi caso).

molhamaleh
fuente
0

Si está utilizando brew, desinstale PostGIS y vuelva a instalarlo. Esto creará los archivos de extensión.

James
fuente
Esto no funcionó para mí, aunque los veo enbrew ls --verbose postgis
dps
0

En algunas distribuciones, las extensiones se empaquetan en el paquete postgresql-contrib. Esto es ciertamente cierto en RedHat / CenOS donde las extensiones están en postgresql-contrib donde xx es el magor y los números de lanzamiento menores sin los puntos completos (postgresql95-contrib para postgres 9.5).

louigi600
fuente
0

Para mí, usando Fedora 25 y la página 9.5, funcionó cuando hice los siguientes cambios:

  • Instalar el paquete yum postgis

    $ yum install postgis2_95

  • Descargue el paquete .deb de scripts postgis

  • Extraiga y copie los directorios 'contrib' y 'extension' en usr / share / postgresql / 9.5 extraído a la misma ruta en su pgsql (tal vez cambiando los permisos a).

  • Reiniciar el servidor

Luiz Fernando da Silva
fuente
0

En mi caso (Linux Mint 18.1 Serena) tuve que eliminar posgresql-9.5y postgisrecién instalado desde el repositorio predeterminado.

sudo apt remove postgis*
sudo apt remove postgresql*

E instale la versión 9.6 del repositorio PosgreSQL :

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

No estoy seguro, la versión tiene algo que ver con el postgis.controlarchivo perdido . Pero de todos modos quería la versión 9.6.

WooYek
fuente