Aqui está minha situação:
- Comecei com o Postgresql 9.4.5 e o Postgis 2.1.6. Tudo correndo bem. Ambos são instalados a partir da fonte.
- Eu atualizei o Postgis para o 2.2.0 (faça o download da origem, configure, make, make install e, em seguida,
ALTER EXTENSION postgis UPGRADE TO '2.2.0';
). Isso parece ter funcionado ( select postgis_full_version()
mostra POSTGIS="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
em ambos os bancos de dados onde o postgis foi instalado), embora o antigo postgis-2.1.so
tenha sido deixado na pasta lib.
- Eu tento atualizar o Postgresql de 9.4.5 para 9.5beta2. Eu faço o download da fonte, configurei, fiz, instalei, instalei o Postgis 2.2.0, initdb e prepare-me para executar
pg_upgrade
. pg_upgrade
falha com:
Your installation references loadable libraries that are missing from the
new installation. You can add these libraries to the new installation,
or remove the functions using them from the old installation. A list of
problem libraries is in the file:
loadable_libraries.txt
loadable_libraries.txt contém:
Could not load library "$libdir/rtpostgis-2.1"
ERROR: could not access file "$libdir/rtpostgis-2.1": No such file or directory
Could not load library "$libdir/postgis-2.1"
ERROR: could not access file "$libdir/postgis-2.1": No such file or directory
Não sei por que a nova versão do Postgresql precisa da versão antiga do Postgis ... não deveria ter sido removida? Mudei os antigos arquivos postgis-2.1.so
e rtpostgis-2.1.so
do diretório lib de 9.4, mas o erro persistiu.
Eu também tentei compilar o Postgis 2.1.6 contra o Postgresql 9.5beta2, mas a compilação falhou com o seguinte erro:
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;
Eu também tentei copiar as bibliotecas 2.1 do diretório 9.4 para o diretório 9.5, mas isso falhou porque a versão do Postgresql não combinava.
Despejar e recarregar todos os bancos de dados é possível, mas apenas como último recurso, porque os bancos de dados são enormes. Se a resposta for "porque o 9.5 ainda está em beta", eu poderia aceitar isso, embora seus betas pareçam bastante estáveis no passado.