Estou tentando instalar várias versões do PostGis e PgRouting na mesma instância do PostgreSQL v9.6, usando o CentOS 7.5.
Tenho lutado com dependências e bibliotecas compartilhadas, para fazer tudo funcionar.
Então a questão é, qual é a melhor maneira de gerenciar as versões de dependências? Se eu instalar uma versão de dependência principal, a versão antiga do Postgis ainda funcionará?
Algumas dependências são: GDAL, GEOS, Proj4, etc.
Estou organizando-os em pastas, contendo subpastas com a versão da dependência, usando --prefix=path/v3.0.0 no script ./configure durante a instalação da dependência.
Exemplo: Pasta -> GEOS - Subpastas: v3.0.0, v3.4.0, etc.
Depois disso, quando eu quiser instalar qualquer versão do PostGIS, eu uso ./configure para usar qualquer caminho absoluto de dependência.
Exemplo: ./configure --with-pgconfig=path --with-gdal=path/version --with-proj4=path/version ...
Mas não tenho certeza se esse é o caminho certo.
Qualquer sugestão é bem-vinda para limpar minha mente.
Não funcionará para instalar várias versões do PostGIS no mesmo diretório do software PostgreSQL, pois os objetos compartilhados resultantes terão o mesmo nome. Usar um diferente
--prefix
não é suficiente, pois a maior parte do PostGIS não está instalada ali, mas no diretório do software PostgreSQL.Portanto, você deve fazer uma cópia do diretório do software PostgreSQL e instalar as diferentes versões do PostGIS em diferentes diretórios.
Se você realmente precisa de versões diferentes do Proj, GDAL etc. (por quê?), as coisas ficam difíceis e você teria que usar uma diferente
LD_LIBRARY_PATH
para cada instância.Mas talvez seja muito mais simples, já que as versões recentes do PostGIS são compatíveis com binários e vêm com scripts de instalação para várias versões.
Então talvez você possa instalar apenas a versão mais recente do PostGIS e usar diferentes versões em diferentes bancos de dados: