Menjalankan Buat Ekstensi postgis memberi ERROR tidak bisa membuka file kontrol ekstensi?

51

Saya telah menginstal PostgreSQL 9.x dan PostGIS 1.5 / 2.0 beberapa kali dan tidak pernah mengalami masalah ini.

Saya baru saja menjalankan server CentOS 6.3 baru dan menjalankan dan saya memiliki Postgres 9.3 berfungsi seperti yang diharapkan. aku harus lari

yum install postgis2_93

dan saya bisa melihat file di

/usr/pgsql-9.3/share/contrib/

Namun, ketika saya berlari

CREATE EXTENSION postgis;

Saya menerima

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

tutorial ( # 1 , # 2 ) yang saya gunakan tidak menunjukkan langkah apa pun antara menginstal PostGIS dan membuat ekstensi.

Apa yang saya lewatkan?

kuda yang hilang
sumber
Yang Anda lewatkan adalah 'postgis.control' :) Pertanyaannya adalah 'mengapa' atau 'di mana'. Pertama, lihat apakah Anda bahkan memiliki salinannya dengan menjalankan 'find / usr -name postgis.control'. Jika tidak, maka itu adalah masalah pengemasan dengan paket postgis2_93 baru yang perlu diperbaiki.
Paul Ramsey
Oh, Anda dapat melihat file (termasuk 'postgis.control'?) Share / contrib, tetapi dari pesan kesalahan pgsql mencari di share / ekstensi. Mungkin ada perubahan lokasi ekstensi default dari 9,2 menjadi 9,3 yang terlewatkan oleh paket.
Paul Ramsey
@ PaulRamsey - Saya berlari find /usr -name postgis.controldan tidak ada. Saya dapat melihat beberapa file di share / contrib; Namun, postgis.control tidak ada di antara mereka ... apa yang Anda sarankan saya lakukan? menunggu perbaikan, buat sendiri, sesuatu yang lain?
kuda hilang
@PaulRamsey - Saya baru saja memverifikasi bahwa postgis-2.1.soada dalam /libapakah ini berarti saya bisa membuat file postgis.control saya sendiri?
kuda hilang
Jika Anda dapat menemukan file postgis.sql, Anda dapat menjalankannya ke dalam basis data Anda (dan file spatial_ref_sys.sql) untuk secara spasial membuat basis data Anda. Laporkan file kontrol yang hilang ke pembuat paket, itu masalah besar.
Paul Ramsey

Jawaban:

12

Jika Anda dapat menemukan file postgis.sql, Anda dapat menjalankannya ke dalam basis data Anda (dan file spatial_ref_sys.sql) untuk secara spasial membuat basis data Anda. Laporkan file kontrol yang hilang ke pembuat paket, itu masalah besar.

Paul Ramsey
sumber
54

Saya baru saja mengalami masalah yang sama pada Ubuntu Server 14.04. Saya menginstal postgisekstensi dari repositori Ubuntu resmi menggunakan apt-get install postgis.

Kemudian, find /usr -name postgis.controltidak mengembalikan hasil apa pun.

Alasannya extension/postgis.controltidak diinstal karena postgis-skrip tidak.

$ 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 

Solusinya adalah menginstalnya.

Pada distro seperti debian:

apt-get install postgis*

Manajer paket aptitude akan secara otomatis menentukan versi paket yang benar untuk diinstal. Postgis-doc juga akan diinstal.

SUNTING

Seperti beberapa orang memperhatikan dalam komentar, postgis*itu tidak diperlukan karena menginstal beberapa paket yang tidak sepenuhnya diperlukan untuk membuatnya berfungsi.

Paket yang dibutuhkan adalah postgisdan postgresql-9.x-postgis-scriptspaket meta. Mereka memilih versi nyata yang benar untuk sistem Anda. Jadi perintah untuk menginstal paket yang diperlukan adalah

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

untuk postgresql-9.3. Ubuntu 16.04berjalan postgresql-9.5sehingga perintahnya menjadi:

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

Anda dapat memeriksa keberhasilan operasi dengan menjalankan perintah berikut:

find /usr -name postgis.control

Di server saya, sekarang kembali:

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

Anda sekarang dapat mengaktifkan ekstensi pada basis data apa pun di server postgres Anda:

  • terhubung ke db Anda dengan superuser (postgres secara default)
  • Lari CREATE EXTENSION postgis;

Skema publik Anda sekarang berisi semua objek dan fungsi postgis.

Rémi B.
sumber
... berharap Anda memiliki arah Windows juga
CodyBugstein
...lupakan! Memecahkannya di Windows dengan menginstal ulang PostGIS via StackBuilder
CodyBugstein
4
Terima kasih, ini telah memperbaiki masalah Ubuntu saya! "Postgis *" mendapat banyak hal yang tidak Anda butuhkan. Saya pikir "apt-get install postgis postgresql-9.3-postgis-2.1" sudah cukup.
Nelson
Kamu mungkin benar. Dalam kasus saya, instal penuh lebih disukai tetapi itu bukan aturannya.
Rémi B.
Aturan "apt-get install postgis *". Terima kasih!
nemesisdesign
18

Di Ubuntu 14.04 Anda juga perlu menginstal postgresql-9.3-postgis-scriptspaket. Setelah saya berlari

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

Saya kemudian berhasil menjalankan

BUAT EKSTENSI postgis;

dalam database saya untuk menginisialisasi PostGIS.

edward
sumber
3

Saya memiliki masalah yang sama, saya hanya menjalankan perintah

sudo apt-get install postgis

Saya menggunakan Ubuntu 18.04

Muhammad Fuzail Zubari
sumber
terima kasih banyak yang menyelesaikannya untuk saya
Ibrahim Mohammed
tidak masalah :) selamat datang!
Muhammad Fuzail Zubari
2

Sumber lain yang menyebabkan masalah adalah bundel PostGIS yang hilang, ini dapat didefinisikan dalam menu instal atau dalam kasus Anda sesudahnya. Oleh karena itu, buka windows start, pergi ke PostgreSQL dan mulai Application Stack Builder . Kemudian pilih PostgreSQL, dengan itu kemungkinan aplikasi dimuat. Untuk bundel PostGIS Anda hanya perlu menginstal ekstensi yang sesuai dengan sistem operasi Anda (32- atau 64bit), cukup langsung ke Ekstensi Spasial .

Bagaimanapun di sini langkah-langkah yang disarankan:

  1. mulai Application Stack Builder
  2. Langsung ke Ekstensi Spasial
  3. Instal bundel PostGIS

Sekarang Anda dapat menambahkan ekstensi dengan CREATE EXTENSION postgis;di SQL Query Anda.

sqlmaster3000
sumber
1

Saya mengalami masalah yang sama, saya pikir masalahnya adalah bahwa paket postgis2_93 tidak diinstal di tempat yang diharapkan seperti yang diharapkan postgresql. Anda dapat mencoba menggunakan repo lain, yang mungkin memberi Anda tempat yang benar. Atau Anda dapat mencari untuk menambahkan ekstensi secara manual dengan menentukan tempat. Dalam kasus saya, file tersebut ada di /usr/pgsql-9.4/

Warna
sumber
1

Saya mengalami mimpi terburuk saya ketika menginstal Postgis 2.X pada SLES 12 SP1. yang tidak memiliki paket yang kompatibel di repo zypper

Ini adalah bagaimana mengatasinya pada server Postgres saya yang menjalankan 9.4.X

Paket Prerequsite yang telah saya instal sebelum PostGis berdasarkan kesalahan

  1. Proj 4 Unduh sumber dingin, Build -> make install
  2. instal Gdal andjibson dengan menambahkan repo zypper zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper instal gdal gdal-devel libjson-c-devel libjson

Menginstal Postgis

sekarang jika Anda kebagian postgress dan membuat ekstensi postgis; akan bekerja

Penting saat mengkonfigurasi Anda harus menentukan path pg-config dan path geosconfig dan Anda TIDAK HARUS memasukkan "tanpa Raster" karena RASTER memainkan peran utama dalam menciptakan ekstensi postgis

Pradeep B
sumber
1

Untuk Ubuntu 16.04 jalankan perintah ini:

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

perhatikan bahwa Anda harus menentukan nomor versi Anda untuk postgresql (9.6 dalam kasus saya) dan postgis (2.3 dalam kasus saya).

molhamaleh
sumber
0

Jika Anda menggunakan minuman, hapus instalasi PostGIS dan pasang kembali. Ini akan membuat file ekstensi.

James
sumber
Ini tidak berhasil untuk saya, walaupun saya melihatnya dibrew ls --verbose postgis
dps
0

Pada beberapa distribusi ekstensi dikemas dalam paket postgresql-contrib. Hal ini tentu berlaku pada RedHat / CenOS di mana ekstensi berada di postgresql-contrib di mana xx adalah magor dan nomor rilis minor tanpa berhenti penuh (postgresql95-contrib untuk postgres 9.5).

louigi600
sumber
0

Bagi saya, menggunakan Fedora 25 dan hal 9.5, itu berhasil ketika saya melakukan perubahan berikut:

  • Instal paket yum postgis

    $ yum instal postgis2_95

  • Unduh paket postgis scripts .deb

  • Ekstrak dan salin direktori 'contrib' dan 'ekstensi' di ekstrak usr / share / postgresql / 9.5 ke jalur yang sama di pgsql Anda (mungkin mengubah izin ke).

  • Mulai ulang server

Luiz Fernando da Silva
sumber
0

Dalam kasus saya (Linux Mint 18.1 Serena) saya harus menghapus posgresql-9.5dan postgisbaru diinstal dari repositori default.

sudo apt remove postgis*
sudo apt remove postgresql*

Dan instal versi 9.6 dari repositori PosgreSQL :

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

Saya tidak yakin, versi ada hubungannya dengan postgis.controlfile yang hilang . Tapi saya tetap menginginkan versi 9.6.

WooYek
sumber