A execução de Criar extensão postgis fornece ERRO não pôde abrir o arquivo de controle de extensão?

51

Instalei o PostgreSQL 9.xe PostGIS 1.5 / 2.0 várias vezes e nunca tive esse problema.

Acabei de instalar um novo servidor CentOS 6.3 e tenho o Postgres 9.3 funcionando conforme o esperado. eu corri

yum install postgis2_93

e eu posso ver os arquivos em

/usr/pgsql-9.3/share/contrib/

no entanto, quando corro

CREATE EXTENSION postgis;

eu recebi

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

os tutoriais ( # 1 , # 2 ) que eu usei não mostram etapas entre instalar o PostGIS e criar a extensão.

o que estou perdendo?

losthorse
fonte
O que você está perdendo é 'postgis.control' :) A pergunta é 'por que' ou 'onde'. Primeiro, veja se você possui uma cópia executando 'find / usr -name postgis.control'. Caso contrário, é um problema de embalagem com o novo pacote postgis2_93 que precisa ser corrigido.
Paul Ramsey
Ah, você pode ver os arquivos (incluindo 'postgis.control'?) Share / contrib, mas a partir da mensagem de erro o pgsql está procurando no compartilhamento / extensão. Pode ter havido uma alteração no local padrão da extensão de 9.2 para 9.3 que o empacotador perdeu.
Paul Ramsey
@PaulRamsey - eu corri find /usr -name postgis.controle não está presente. Eu posso ver alguns arquivos em share / contrib; no entanto, postgis.control não está entre eles ... o que você sugere que eu faça? esperar por uma correção, fazer a minha própria, outra coisa?
losthorse
@PaulRamsey - Acabei de verificar que postgis-2.1.soestá presente /lib, isso significa que posso criar meu próprio arquivo postgis.control?
losthorse 12/09
Se você puder encontrar um arquivo postgis.sql, poderá executá-lo em seu banco de dados (e no arquivo spatial_ref_sys.sql) para espacializar manualmente seu banco de dados. Relate o arquivo de controle ausente ao empacotador, isso é um grande problema.
Paul Ramsey

Respostas:

12

Se você puder encontrar um arquivo postgis.sql, poderá executá-lo em seu banco de dados (e no arquivo spatial_ref_sys.sql) para espacializar manualmente seu banco de dados. Relate o arquivo de controle ausente ao empacotador, isso é um grande problema.

Paul Ramsey
fonte
54

Eu apenas tive o mesmo problema no Ubuntu Server 14.04. Eu instalei a postgisextensão dos repositórios oficiais do Ubuntu usando apt-get install postgis.

Então, find /usr -name postgis.controlnão retornou nenhum resultado.

O motivo extension/postgis.controlnão foi instalado porque o postgis-scripts não estava.

$ 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 

A solução é instalá-lo.

Em distros do tipo debian:

apt-get install postgis*

O gerenciador de pacotes do aptitude determinará automaticamente as versões corretas do pacote a serem instaladas. O postgis-doc também será instalado.

EDITAR

Como algumas pessoas notaram nos comentários, isso postgis*não é necessário porque instala alguns pacotes que não são estritamente necessários para fazê-lo funcionar.

Os pacotes necessários são postgise postgresql-9.x-postgis-scriptsmeta pacotes. Eles selecionam a versão real correta para o seu sistema. Portanto, os comandos para instalar os pacotes necessários são

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

para postgresql-9.3. O Ubuntu 16.04é executado postgresql-9.5para que o comando se torne:

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

Você pode verificar o sucesso da operação executando o seguinte comando:

find /usr -name postgis.control

No meu servidor, agora ele retorna:

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

Agora você pode ativar a extensão em qualquer banco de dados no servidor postgres:

  • conecte-se ao seu db com superusuário (postgres por padrão)
  • corre CREATE EXTENSION postgis;

Seu esquema público agora contém todos os objetos e funções postgis.

Rémi B.
fonte
... gostaria de ter sentido o Windows também
CodyBugstein
...deixa pra lá! Resolvido no Windows, reinstalando o PostGIS através do StackBuilder
CodyBugstein 10/10
4
Graças a isso resolvi meu problema com o Ubuntu! O "postgis *" recebe um monte de coisas que você não precisa. Eu acho que "o apt-get install postgis postgresql-9.3-postgis-2.1" é suficiente.
Nelson
Você provavelmente está certo. No meu caso, uma instalação completa era preferível, mas não é a regra.
Rémi B.
Regras do "apt-get install postgis *". Obrigado!
Nemesisdesign 6/06/15
18

No Ubuntu 14.04, você também precisa instalar o postgresql-9.3-postgis-scriptspacote. Depois que eu corri

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

Eu era capaz de executar com sucesso

CRIAR EXTENSÃO postgis;

no meu banco de dados para inicializar o PostGIS.

Edward
fonte
3

Eu tive o mesmo problema, apenas executei o comando

sudo apt-get install postgis

Eu estava usando o Ubuntu 18.04

Muhammad Fuzail Zubari
fonte
muito obrigado que resolveu para mim
Ibrahim Mohammed
não tem problema :) seja bem-vindo!
Muhammad Fuzail Zubari 15/09
2

Outra fonte que causou o problema pode ser o pacote PostGIS ausente, que pode ser definido no menu de instalação ou no seu caso posteriormente. Para isso, abra o Windows, vá para o PostgreSQL e inicie o Application Stack Builder . Depois selecione PostgreSQL, para que os aplicativos possíveis sejam carregados. Para o pacote PostGIS, você só precisa instalar a extensão adequada ao seu sistema operacional (32 ou 64 bits), basta direcionar para as extensões espaciais .

Afinal aqui as etapas recomendadas:

  1. iniciar Application Stack Builder
  2. Direto para extensões espaciais
  3. Instalar o pacote PostGIS

Agora você pode adicionar a extensão CREATE EXTENSION postgis;na sua Consulta SQL.

sqlmaster3000
fonte
1

Encontrei o mesmo problema, acho que o problema é que o pacote postgis2_93 não está instalado no local esperado, como seria esperado pelo postgresql. Você pode tentar usar outro repositório, o que pode fornecer o local correto. Ou você pode procurar adicionar extensões manualmente, especificando o local. No meu caso, o arquivo está em /usr/pgsql-9.4/

Matiz
fonte
1

Tive meu pior pesadelo ao instalar o Postgis 2.X no SLES 12 SP1. que não possui pacote compatível no zypper repo

Aqui está como é resolvido na minha instância do servidor Postgres executando 9.4.X

Pacotes pré-requisitos que eu instalei antes do PostGis com base nos erros

  1. Proj 4 Download fonte frio, Build -> make install
  2. instale Gdal andjibson adicionando zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. Instalação do zypper gdal gdal-devel libjson-c-devel libjson

Instalando o Postgis

agora se você for para o postgress e criar a extensão postgis; vai funcionar

Importante durante a configuração, você deve especificar o caminho da pg-config e o caminho do geosconfig e NÃO DEVE incluir "sem Raster", pois o RASTER desempenha papel principal na criação da extensão postgis

Pradeep B
fonte
1

Para o Ubuntu 16.04, execute este comando:

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

note que você deve especificar o número da sua versão para o postgresql (9.6 no meu caso) e o postgis (2.3 no meu caso).

molhamaleh
fonte
0

Se você estiver usando o brew, desinstale o PostGIS e reinstale-o. Isso criará os arquivos de extensão.

James
fonte
Isso não funcionou para mim, embora eu os veja embrew ls --verbose postgis
dps 18/06
0

Em algumas distribuições, as extensões são empacotadas no pacote postgresql-contrib. Isso certamente se aplica ao RedHat / CenOS, onde as extensões estão no postgresql-contrib, em que xx é o número principal e menor de versão sem os pontos finais (postgresql95-contrib para o postgres 9.5).

louigi600
fonte
0

Para mim, usando o Fedora 25 e a página 9.5, funcionou quando fiz as seguintes alterações:

  • Instale o pacote yum postgis

    $ yum install postgis2_95

  • Faça o download do pacote .deb de scripts postgis

  • Extraia-o e copie os diretórios 'contrib' e 'extension' em usr / share / postgresql / 9.5 extraído para o mesmo caminho no seu pgsql (talvez altere as permissões para).

  • Reinicie o servidor

Luiz Fernando da Silva
fonte
0

No meu caso (Linux Mint 18.1 Serena), tive que remover posgresql-9.5e postgisinstalar recentemente o repositório padrão.

sudo apt remove postgis*
sudo apt remove postgresql*

E instale a versão 9.6 do repositório PosgreSQL :

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

Não tenho certeza, a versão tem algo a ver com o postgis.controlarquivo ausente . Mas eu queria a versão 9.6 de qualquer maneira.

WooYek
fonte