BŁĄD PostGIS: nie można załadować biblioteki „/usr/lib/postgresql91/lib64/postgis-2.0.so”

9

System operacyjny to openSUSE 12.1, PostgreSQL - 9.1, PostGIS - 2.0. Postgre / PostGIS są instalowane z aplikacji: repozytorium geograficzne.

Po ostatnich aktualizacjach, gdy próbuję połączyć się z bazą danych, pojawia się następujący błąd:

    ERROR:  could not load library "/usr/lib/postgresql91/lib64/postgis-2.0.so":
 /usr/lib/postgresql91/lib64/postgis-2.0.so: undefined symbol: pj_get_spheroid_defn

Szukałem w Internecie tego błędu ( podpowiedź-1 , podpowiedź-2 ) i wydaje mi się, że może to mieć coś wspólnego z ld.so.config (lub poleceniem ldconfig). Ale nie mogę zrozumieć, co muszę zrobić w moim przypadku.

SS_Rebelious
źródło
2
potrzebna jest najnowsza wersja proj (> = 4,8). Co pokazuje proj --versioni / lub ldd `which proj`pokazuje?
Mike T
@MikeToews, moja wersja proj to 4.7.1. Wygląda na to, że muszę go zaktualizować.
SS_Rebelious
Zainstalowałem proj 4.8 z ich oficjalnej strony. Ale mimo to, kiedy robię program, pokazuje mi> Rel. 4.7.1, 23 September 2009Jak mogę go zaktualizować do wersji 4.8. Nie mam żadnych pomysłów :( Używam Ubuntu 12.4. Dziękuję Mo.
mmrs151

Odpowiedzi:

6

Dzięki MikeToews udało mi się rozwiązać ten problem. PostGIS 2.0 w openSUSE zależy od tego, libproj0a jego wersja musi wynosić> = 4,8. Jakoś menedżer pakietów nie powiadomił mnie o nowej wersji dostępnej, libproj0więc sprawdziłem jej nowszą wersję ręcznie za pomocą Yast w zakładce „Wersje”. Po aktualizacji jestem w stanie normalnie obsługiwać bazę danych.

SS_Rebelious
źródło
to nie jest prawda.
Evan Carroll,
0

Nie wierzę, że wybrana odpowiedź ma coś wspólnego z problemem,

Co się stało

  1. Postgre / PostGIS są instalowane z aplikacji: repozytorium geograficzne.
  2. System operacyjny to openSUSE

Zainstalowałeś nową wersję PostGIS zbudowaną na wersji proj, której nie masz. Twój profil jest zapewniony przez OpenSUSE. Musisz zainstalować wersję proj z aplikacji: repozytorium Geo lub wersję PostGIS z głównego repozytorium OpenSUSE. Jest to niedopasowanie zależności i klienta. Jeśli problem będzie się powtarzał, powinieneś zgłosić błąd w SUSE.

To nie jest tak, że PostGIS nie działa na starych wersjach proj. Chodzi o to, że SUSE buduje TYLKO PostGIS z nowszymi wersjami, więc potrzebujesz go.

PostGIS i stary proj

Z raportu o błędzie złożonego dwa lata temu ,

Zasadniczo PostGIS może również działać ze starszymi wersjami Proj4, ale musi wiedzieć w czasie kompilacji.

Wygląda na to, że plik binarny watsonta został zbudowany przeciwko Proj 4.8, ale działał w stosunku do poprzedniej wersji. Najprawdopodobniej błąd w pakiecie binarnym lub jego zależności (proj-4.8 + jest zależnością binarnych postgis zbudowanych przez program pakujący).

Myślę, że to jest problem. Zbudowałeś przeciwko nowszej wersji proj niż zainstalowałeś. Uaktualnienie instalacji do wersji zbudowanej przez Agianst to tylko jeden ze sposobów rozwiązania problemu.

Możesz zobaczyć tę funkcję wywoływaną tutaj i jest ona chroniona przez if.

#if POSTGIS_PROJ_VERSION >= 48

Jeśli to nie działa, masz inny problem. Zapewnia to system kompilacji w 10-letnim makrze

Evan Carroll
źródło
-1

mmrs151. Aby zaktualizować z wersji proj 4.7 do wersji 4.8 na Ubuntu 13.04. Przynajmniej pomogło mi to rozwiązać ten sam problem.

$ sudo apt-get upgrade libproj-dev

Amimo Benja
źródło
Czy mógłbyś rozwinąć nieco swoją odpowiedź? Jak rozwiązuje problem PO?
Martin
2
Ta odpowiedź jest bezużyteczna - openSUSE nie używa apt.
SS_Rebelious
Odpowiedź była przeznaczona dla mmrs151.
Amimo Benja,