Hier ist meine Situation:
- Ich habe mit Postgresql 9.4.5 und Postgis 2.1.6 begonnen. Alles läuft reibungslos. Beide werden von der Quelle installiert.
- Ich habe Postgis auf 2.2.0 aktualisiert (Quelle herunterladen, konfigurieren, erstellen, dann installieren
ALTER EXTENSION postgis UPGRADE TO '2.2.0';
). Dies scheint funktioniert zu haben (select postgis_full_version()
zeigtPOSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTER
in beiden Datenbanken, wo postgis installiert wurde), obwohl das altepostgis-2.1.so
im lib- Verzeichnis belassen wurde . - Ich versuche, Postgresql von 9.4.5 auf 9.5beta2 zu aktualisieren. Ich lade die Quelle herunter, konfiguriere, mache, installiere, installiere Postgis 2.2.0, initdb und mache mich bereit zum Ausführen
pg_upgrade
.pg_upgrade
schlägt fehl mit:
Ihre Installation verweist auf ladbare Bibliotheken, die in der neuen Installation fehlen. Sie können diese Bibliotheken zur neuen Installation hinzufügen oder die Funktionen, die sie verwenden, aus der alten Installation entfernen. Eine Liste der Problembibliotheken befindet sich in der Datei loadable_libraries.txt
loadable_libraries.txt enthält:
Bibliothek "$ libdir / rtpostgis-2.1" konnte nicht geladen werden FEHLER: Zugriff auf Datei "$ libdir / rtpostgis-2.1" nicht möglich: Keine solche Datei oder kein solches Verzeichnis
Bibliothek "$ libdir / postgis-2.1" konnte nicht geladen werden FEHLER: Zugriff auf Datei "$ libdir / postgis-2.1" nicht möglich: Keine solche Datei oder kein solches Verzeichnis
Ich bin mir nicht sicher, warum die neue Version von Postgresql die alte Version von Postgis benötigt ... hätte sie nicht entfernt werden sollen? Ich habe die alten postgis-2.1.so
und rtpostgis-2.1.so
Dateien aus dem lib-Verzeichnis von 9.4 verschoben, aber der Fehler bleibt bestehen.
Ich habe auch versucht, Postgis 2.1.6 gegen Postgresql 9.5beta2 zu kompilieren, aber die Kompilierung ist mit folgendem Fehler fehlgeschlagen:
lwgeom_accum.c: In function ‘pgis_geometry_accum_transfn’:
lwgeom_accum.c:109:46: error: ‘AggState {aka struct AggState}’ has no member named ‘aggcontext’
aggcontext = ((AggState *) fcinfo->context)->aggcontext;
Ich habe auch versucht, die 2.1-Bibliotheken aus dem 9.4-Verzeichnis in das 9.5-Verzeichnis zu kopieren, aber das schlug fehl, weil die Postgresql-Version nicht übereinstimmte.
Das Speichern und erneute Laden aller Datenbanken ist möglich, jedoch nur als letzter Ausweg, da die Datenbanken sehr groß sind. Wenn die Antwort lautet "weil 9.5 noch in der Beta ist", könnte ich das akzeptieren, obwohl ihre Betas in der Vergangenheit ziemlich stabil zu sein scheinen.