ERREUR PostGIS: impossible de charger la bibliothèque «/usr/lib/postgresql91/lib64/postgis-2.0.so»


9

Le système d'exploitation est openSUSE 12.1, PostgreSQL - 9.1, PostGIS - 2.0. Postgre / PostGIS sont installés à partir du référentiel Application: Geo.

Après des mises à jour récentes lorsque j'essaie de me connecter à ma base de données, j'obtiens l'erreur suivante:

    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

J'ai recherché cette erreur sur le Web ( indice-1 , indice-2 ) et il semble que cela puisse avoir quelque chose à voir avec ld.so.config (ou la commande ldconfig). Mais je ne peux pas comprendre ce que je dois faire dans mon cas.


2
une version récente de proj (> = 4.8) est nécessaire. Que montre proj --versionet / ou ldd `which proj`montre?
Mike T

@MikeToews, ma version proj est 4.7.1. On dirait que je dois le mettre à jour.
SS_Rebelious

J'ai installé proj 4.8 sur leur site officiel. Mais quand je fais un projet, il me montre> Rel. 4.7.1, 23 September 2009Comment puis-je le mettre à jour en 4.8. Je n'ai plus d'idées :( J'utilise Ubuntu 12.4 Merci Mo.
mmrs151

Réponses:


6

Grâce à MikeToews, j'ai pu résoudre ce problème. PostGIS 2.0 dans openSUSE dépend libproj0et sa version doit être> = 4.8. D'une manière ou d'une autre, le gestionnaire de paquets ne m'a pas informé de la nouvelle version disponible pour le libproj0. J'ai donc vérifié sa nouvelle version manuellement via Yast dans l'onglet "Versions". Après une mise à jour, je peux utiliser la base de données normalement.


ce n'est pas vrai.
Evan Carroll

0

Je ne crois pas que la réponse choisie ait quelque chose à voir avec le problème,

Qu'est-il arrivé

  1. Postgre / PostGIS sont installés à partir du référentiel Application: Geo.
  2. Le système d'exploitation est openSUSE

Vous avez installé une nouvelle version de PostGIS construite avec une version de proj que vous n'avez pas. Votre projet est probablement fourni par OpenSUSE. Vous devez installer la version de proj à partir du référentiel Application: Geo ou la version de PostGIS à partir du référentiel OpenSUSE principal. Il s'agit d'une incompatibilité client-dépendance. Vous devez signaler un bogue dans SUSE si le problème persiste.

Ce n'est pas que PostGIS ne fonctionne pas sur les anciennes versions de proj. C'est que SUSE construit UNIQUEMENT PostGIS avec des versions plus récentes , vous en avez donc besoin.

PostGIS et ancien projet

D'après un rapport de bogue déposé il y a deux ans ,

Donc, fondamentalement, PostGIS peut également fonctionner avec les anciennes versions de Proj4, mais il doit le savoir au moment de la compilation.

Il semble alors que le binaire de watsonta ait été construit avec Proj 4.8 mais fonctionnait avec une version précédente. Très probablement un bogue dans le package binaire, ou ses dépendances (proj-4.8 + étant une dépendance du postgis binaire tel que construit par le packager).

Je pense que c'est ça le problème. Vous avez construit contre une version de proj plus récente que celle que vous avez installée. La mise à niveau de l'installation vers la version que vous avez créée agianst n'est qu'un moyen de résoudre le problème.

Vous pouvez voir cette fonction appelée ici et elle est protégée par un if.

#if POSTGIS_PROJ_VERSION >= 48

Si cela ne fonctionne pas, vous avez un autre problème. Il est fourni par le système de construction dans une macro vieille de 10 ans


-1

mmrs151. Pour mettre à niveau la version 4.7 de proj vers la version 4.8 de proj sur Ubuntu 13.04. Au moins, cela m'a aidé à résoudre le même problème.

$ sudo apt-get upgrade libproj-dev


Pourriez-vous développer un peu votre réponse? Comment résout-il le problème du PO?
Martin

2
Cette réponse est inutile - openSUSE n'utilise pas apt.
SS_Rebelious

La réponse était destinée à mmrs151.
Amimo Benja
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.