Uruchamianie Utwórz rozszerzenie postgis daje BŁĄD Nie można otworzyć pliku kontrolnego rozszerzenia?

51

Kilka razy zainstalowałem PostgreSQL 9.x i PostGIS 1.5 / 2.0 i nigdy nie miałem tego problemu.

Właśnie uruchomiłem nowy serwer CentOS 6.3 i mam Postgres 9.3 działający zgodnie z oczekiwaniami. Uciekłem

yum install postgis2_93

i widzę pliki w

/usr/pgsql-9.3/share/contrib/

jednak kiedy biegnę

CREATE EXTENSION postgis;

Otrzymałem

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

samouczki ( # 1 , # 2 ), których użyłem, nie pokazują żadnych kroków między instalacją PostGIS a utworzeniem rozszerzenia.

czego mi brakuje?

Losthorse
źródło
Brakuje tylko „postgis.control” :) Pytanie brzmi „dlaczego” lub „gdzie”. Najpierw sprawdź, czy masz kopię, uruchamiając polecenie „find / usr -name postgis.control”. Jeśli nie, oznacza to problem z opakowaniem z nowym pakietem postgis2_93, który należy naprawić.
Paul Ramsey
Och, możesz zobaczyć pliki (w tym „postgis.control”?) Share / contrib, ale z komunikatu o błędzie pgsql szuka udziału / rozszerzenia. Mogła nastąpić zmiana domyślnej lokalizacji rozszerzenia z 9,2 na 9,3, której brakowało w programie pakującym.
Paul Ramsey
@PaulRamsey - Uruchomiłem find /usr -name postgis.controli nie ma go. Widzę niektóre pliki w share / contrib; jednak nie ma wśród nich postgis.control ... co sugerujesz, żebym zrobił? czekać na poprawkę, zrobić własną, coś jeszcze?
Losthorse
@PaulRamsey - Właśnie sprawdziłem, czy postgis-2.1.sojest obecny. /libCzy to oznacza, że ​​mogę po prostu stworzyć własny plik postgis.control?
Losthorse
Jeśli możesz znaleźć plik postgis.sql, możesz uruchomić go w swojej bazie danych (i pliku spatial_ref_sys.sql), aby ręcznie spacjalizować bazę danych. Zgłoś brakujący plik kontrolny do programu pakującego, to duży problem.
Paul Ramsey

Odpowiedzi:

12

Jeśli możesz znaleźć plik postgis.sql, możesz uruchomić go w swojej bazie danych (i pliku spatial_ref_sys.sql), aby ręcznie spacjalizować bazę danych. Zgłoś brakujący plik kontrolny do programu pakującego, to duży problem.

Paul Ramsey
źródło
54

Właśnie miałem ten sam problem na Ubuntu Server 14.04. Zainstalowałem postgisrozszerzenie z oficjalnych repozytoriów Ubuntu za pomocą apt-get install postgis.

Wtedy find /usr -name postgis.controlnie zwrócił żadnych wyników.

Powód extension/postgis.controlnie został zainstalowany, ponieważ nie zainstalowano skryptów postgis.

$ 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 

Rozwiązaniem jest jego instalacja.

W dystrybucjach podobnych do Debiana:

apt-get install postgis*

Menedżer pakietów aptitude automatycznie określi poprawne wersje pakietów do zainstalowania. Postgis-doc również zostanie zainstalowany.

EDYTOWAĆ

Jak niektórzy zauważyli w komentarzach, postgis*nie jest to wymagane, ponieważ instaluje niektóre pakiety, które nie są absolutnie wymagane, aby po prostu uruchomić.

Wymagane pakiety to postgisi postgresql-9.x-postgis-scriptspakiety meta. Wybierają poprawną prawdziwą wersję dla twojego systemu. Tak więc komendy instalowania wymaganych pakietów to

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

dla postgresql-9.3. Ubuntu 16.04działa, postgresql-9.5więc polecenie staje się:

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

Możesz sprawdzić powodzenie operacji, uruchamiając następujące polecenie:

find /usr -name postgis.control

Na moim serwerze zwraca teraz:

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

Możesz teraz włączyć rozszerzenie w dowolnej bazie danych na serwerze Postgres:

  • połącz się z db za pomocą superużytkownika (domyślnie postgres)
  • biegać CREATE EXTENSION postgis;

Twój schemat publiczny zawiera teraz wszystkie obiekty i funkcje Postgis.

Rémi B.
źródło
... żałuję, że nie masz też kierunku Windows
CodyBugstein
...nieważne! Rozwiązano go w systemie Windows, ponownie instalując PostGIS za pośrednictwem StackBuilder
CodyBugstein
4
Dzięki temu naprawiłem mój problem z Ubuntu! „Postgis *” zawiera wiele rzeczy, których nie potrzebujesz. Myślę, że „apt-get install postgis postgresql-9.3-postgis-2.1” jest wystarczający.
Nelson
Pewnie masz rację. W moim przypadku preferowana była pełna instalacja, ale nie jest to regułą.
Rémi B.
Reguły „apt-get install postgis *”. Dzięki!
nemesisdesign
18

W Ubuntu 14.04 musisz także zainstalować postgresql-9.3-postgis-scriptspakiet. Po tym jak pobiegłem

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

Byłem wtedy w stanie z powodzeniem uruchomić

UTWÓRZ PRZEDŁUŻENIE postgis;

w mojej bazie danych, aby zainicjować PostGIS.

Edward
źródło
3

Miałem ten sam problem, po prostu uruchomiłem polecenie

sudo apt-get install postgis

Korzystałem z Ubuntu 18.04

Muhammad Fuzail Zubari
źródło
wielkie dzięki, że to dla mnie rozwiązało
Ibrahim Mohammed
nie ma problemu :) witamy!
Muhammad Fuzail Zubari
2

Innym źródłem, które spowodowało problem, może być brakujący pakiet PostGIS, który można zdefiniować w menu instalacyjnym lub w twoim przypadku później. Następnie uruchom otwarte okna, przejdź do PostgreSQL i uruchom Konstruktor stosów aplikacji . Następnie wybierz PostgreSQL, dzięki czemu możliwe aplikacje zostaną załadowane. W przypadku pakietu PostGIS wystarczy zainstalować rozszerzenie odpowiednie dla systemu operacyjnego (32- lub 64-bitowe), po prostu bezpośrednio do rozszerzeń przestrzennych .

W końcu tutaj zalecane kroki:

  1. uruchom program Application Stack Builder
  2. Bezpośrednio do rozszerzeń przestrzennych
  3. Zainstaluj pakiet PostGIS

Teraz możesz dodać rozszerzenie CREATE EXTENSION postgis;w swoim zapytaniu SQL.

sqlmaster3000
źródło
1

Napotkałem ten sam problem, myślę, że problem polega na tym, że pakiet postgis2_93 nie jest zainstalowany w oczekiwanym miejscu, jak oczekiwałby postgresql. Możesz spróbować użyć innego repozytorium, które może dać ci właściwe miejsce. Możesz też ręcznie wyszukać rozszerzenia, określając miejsce. W moim przypadku plik znajduje się w /usr/pgsql-9.4/

Odcień
źródło
1

Miałem najgorszy koszmar, instalując Postgis 2.X na SLES 12 SP1. który nie ma kompatybilnego pakietu w repozytorium zypper

Oto jak to rozwiązać w mojej instancji serwera Postgres z wersją 9.4.X

Wcześniejsze pakiety, które zainstalowałem przed PostGis na podstawie błędów

  1. Proj 4 Pobierz źródło zimno, Kompiluj -> wykonaj instalację
  2. zainstaluj Gdal andjibson, dodając repozytorium zypper zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper install gdal gdal-devel libjson-c-devel libjson

Instalowanie Postgis

teraz, jeśli masz postgress i tworzysz rozszerzenie postgis; będzie działać

Ważne podczas konfigurowania należy podać ścieżkę pg-config i ścieżkę geosconfig, a NIE WOLNO dodawać „bez rastra”, ponieważ RASTER odgrywa główną rolę w tworzeniu rozszerzenia postgis

Pradeep B
źródło
1

W systemie Ubuntu 16.04 uruchom następujące polecenie:

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

zwróć uwagę, że powinieneś podać swój numer wersji zarówno dla postgresql (9.6 w moim przypadku), jak i postgis (2.3 w moim przypadku).

Molhamaleh
źródło
0

Jeśli używasz naparu, odinstaluj PostGIS i zainstaluj go ponownie. Spowoduje to utworzenie plików rozszerzeń.

James
źródło
To nie dla mnie, choć ja je zobaczyć wbrew ls --verbose postgis
dps
0

W niektórych dystrybucjach rozszerzenia są pakowane w pakiet postgresql-contrib. Dotyczy to z pewnością RedHat / CenOS, gdzie rozszerzenia są w postgresql-contrib, gdzie xx to magor i drobne numery wydań bez kropek (postgresql95-contrib dla postgres 9.5).

louigi600
źródło
0

Dla mnie, używając Fedory 25 i str. 9.5, zadziałało, gdy wprowadziłem następujące zmiany:

  • Zainstaluj pakiet yum postgis

    $ mniam zainstalować postgis2_95

  • Pobierz pakiet .deb skryptów postgis

  • Wyodrębnij go i skopiuj katalogi „contrib” i „extension” w wyodrębnionym usr / share / postgresql / 9.5 na tę samą ścieżkę w pgsql (być może zmieniając uprawnienia na).

  • Uruchom ponownie serwer

Luiz Fernando da Silva
źródło
0

W moim przypadku (Linux Mint 18.1 Serena) musiałem usunąć posgresql-9.5i postgisponownie zainstalować z domyślnego repozytorium.

sudo apt remove postgis*
sudo apt remove postgresql*

I zainstaluj wersję 9.6 z repozytorium PosgreSQL :

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

Nie jestem pewien, wersja ma coś wspólnego z brakującym postgis.controlplikiem. Ale i tak chciałem wersji 9.6.

WooYek
źródło