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.
postgis
postgresql
SS_Rebelious
źródło
źródło
proj --version
i / lubldd `which proj`
pokazuje?Rel. 4.7.1, 23 September 2009
Jak mogę go zaktualizować do wersji 4.8. Nie mam żadnych pomysłów :( Używam Ubuntu 12.4. Dziękuję Mo.Odpowiedzi:
Dzięki MikeToews udało mi się rozwiązać ten problem. PostGIS 2.0 w openSUSE zależy od tego,
libproj0
a jego wersja musi wynosić> = 4,8. Jakoś menedżer pakietów nie powiadomił mnie o nowej wersji dostępnej,libproj0
wię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.źródło
Nie wierzę, że wybrana odpowiedź ma coś wspólnego z problemem,
Co się stało
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 ,
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
.Jeśli to nie działa, masz inny problem. Zapewnia to system kompilacji w 10-letnim makrze
źródło
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.
źródło