logo
Published on PostGIS.fr (http://old.postgis.fr)

Problème de "mise à jour légère" pour passer à la version 1.2.0

By djay
Créé 19 Déc 2006 - 19:12

Si vous avez installé la version 1.2.0 de PostGIS et que vous possédiez déjà des bases de données spatiales utilisant une version antérieur, vous avez sans doute rencontré des problèmes lors de la première tentative de "mise à jour légère" de votre base.

Plus précisément lors de la tentative de chargement du fichier lwpostgis_upgrade.sql vous avez eut un message d'erreur lors de la tentative d'utilisation de la requête SQL : SELECT postgis_lib_version() car elle faisait référence à un fichier liblwgeom.so.1.1 qui n'existe effectivement plus.

En effet ceci est dû au fait que la version 1.2.0 implique un nouveau nom pour la librarie dynamique liblwgeom.so. Les versions 1.1.X utilisaient liblwgeom.so.1.1 qui devient, pour une version 1.2.0, liblwgeom.so.1.2 (ntdpf : pour résumer, pour postgis-majeur.mineur.révision le nom de la librairie correspondante est donc liblwgeom.so.majeur.mineur).

La première solution qui vient à l'esprit consiste simplement en la création d'un lien symbolique (ln -s) de liblwgeom.so.1.1 vers la nouvelle librarie dynamique liblwgeom.so.1.2 (ou liblwgeom.so). Cela fonctionne d'ailleurs parfaitement.

Malgrès tout cette solution ne me convenait pas. Supposons en effet que vous oubliez de supprimer le lien symbolique que vous avez créer lors de la mise à jour légère, qu'adviendrait-il alors si vous souhaitiez installer de nouveau une version antérieur (le lien symbolique existant déjà) ? De tout manière, dans l'objectif de créer des ebuilds pour postgis, il n'était pas acceptable de créer ce lien symbolique.

J'ai donc cherché et trouvé une façon simple et rapide de résoudre ce problème, elle consiste simplement à recréer l'ensemble des functions utilisant le language C afin de spécifier le nom correct de la librarie dynamique liblwgeom.so. Cela se fait tout simplement en utilisant un simple grep de façon suivante :

# grep "'C'" -B 4 /usr/share/postgresql/contrib/lwpostgis.sql \
    > loadBeforeUpgrade.sql
# psql ma_base -f loadBeforeUpgrade.sql

Une fois ceci réalisé vous devriez être capable de réaliser la "mise à jour légère" de votre base sans aucun problème (pour plus d'informations concernant la mise à jour légère regardez donc ici [1]).

Remarque : cette méthode reste valable pour un passage à une version inférieur à celle déjà installée et chargé dans votre base.


Source URL:
http://old.postgis.fr/node/415