PostGIS-FEHLER: Bibliothek "/usr/lib/postgresql91/lib64/postgis-2.0.so" konnte nicht geladen werden.

9

Betriebssystem ist openSUSE 12.1, PostgreSQL - 9.1, PostGIS - 2.0. Postgre / PostGIS werden aus dem Application: Geo-Repository installiert.

Nach den letzten Aktualisierungen beim Versuch, eine Verbindung zu meiner Datenbank herzustellen, wird der folgende Fehler angezeigt:

    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

Ich habe im Web nach diesem Fehler gesucht ( Hinweis-1 , Hinweis-2 ) und es scheint, dass er etwas mit ld.so.config (oder dem Befehl ldconfig) zu tun hat. Aber ich kann nicht herausfinden, was ich in meinem Fall tun muss.

SS_Rebelious
quelle
2
Eine aktuelle Version von proj (> = 4.8) wird benötigt. Was zeigt proj --versionund / oder ldd `which proj`zeigt?
Mike T
@ MikeToews, meine Projektversion ist 4.7.1. Sieht so aus, als müsste ich es aktualisieren.
SS_Rebelious
Ich habe proj 4.8 von ihrer offiziellen Seite installiert. Aber immer noch, wenn ich eine Projektion mache, zeigt es mir> Rel. 4.7.1, 23 September 2009Wie kann ich es auf 4.8 aktualisieren? Ich habe keine Ideen mehr :( Ich benutze Ubuntu 12.4. Danke Mo.
mmrs151

Antworten:

6

Dank MikeToews konnte ich dieses Problem beheben. PostGIS 2.0 in openSUSE hängt davon ab libproj0und seine Version muss> = 4.8 sein. Irgendwie hat mich der Paketmanager nicht über die neue Version informiert, die für das verfügbar ist, libproj0also habe ich die neuere Version manuell über Yast auf der Registerkarte "Versionen" überprüft. Nach einem Update kann ich die Datenbank normal betreiben.

SS_Rebelious
quelle
das ist nicht wahr.
Evan Carroll
0

Ich glaube nicht, dass die gewählte Antwort etwas mit dem Problem zu tun hat.

Was ist passiert

  1. Postgre / PostGIS werden aus dem Application: Geo-Repository installiert.
  2. Betriebssystem ist openSUSE

Sie haben eine neue Version von PostGIS installiert, die auf einer Version von proj basiert, die Sie nicht haben. Ihr Projekt wird wahrscheinlich von OpenSUSE bereitgestellt. Sie müssen die Version von proj aus dem Application: Geo-Repository oder die Version von PostGIS aus dem OpenSUSE- Hauptrepository installieren . Dies ist eine Nichtübereinstimmung zwischen Abhängigkeit und Client. Sie sollten einen Fehler in SUSE melden, wenn das Problem weiterhin besteht.

Es ist nicht so, dass PostGIS bei alten Versionen von proj nicht funktioniert. Es ist so, dass SUSE NUR PostGIS gegen neuere Versionen erstellt, sodass Sie eine benötigen.

PostGIS und altes proj

Aus einem vor zwei Jahren eingereichten Fehlerbericht ,

Grundsätzlich kann PostGIS also auch mit älteren Proj4-Versionen funktionieren, muss dies jedoch zur Kompilierungszeit wissen.

Es sieht dann so aus, als ob die Binärdatei von watsonta gegen Proj 4.8 erstellt wurde, aber gegen eine frühere Version lief. Sehr wahrscheinlich ein Fehler im Binärpaket oder seinen Abhängigkeiten (proj-4.8 + ist eine Abhängigkeit des vom Packager erstellten binären Postgis).

Ich denke das ist das Problem. Sie haben gegen eine neuere Version von proj gebaut, als Sie installiert haben. Ein Upgrade der Installation auf die Version, die Sie agianst erstellt haben, ist nur eine Möglichkeit, das Problem zu beheben.

Sie können diese hier aufgerufene Funktion sehen und sie ist durch eine geschützt if.

#if POSTGIS_PROJ_VERSION >= 48

Wenn das nicht funktioniert, haben Sie ein anderes Problem. Es wird vom Build-System in einem 10 Jahre alten Makro bereitgestellt

Evan Carroll
quelle
-1

mmrs151. Upgrade von proj Version 4.7 auf proj 4.8 unter Ubuntu 13.04. Zumindest hat es mir geholfen, das gleiche Problem zu lösen.

$ sudo apt-get upgrade libproj-dev

Amimo Benja
quelle
Könnten Sie Ihre Antwort etwas näher erläutern? Wie löst es das Problem des OP?
Martin
2
Diese Antwort ist nutzlos - openSUSE verwendet apt nicht.
SS_Rebelious
Die Antwort war für mmrs151 gedacht.
Amimo Benja