ERRO PostGIS: não foi possível carregar a biblioteca “/usr/lib/postgresql91/lib64/postgis-2.0.so”

9

O SO é openSUSE 12.1, PostgreSQL - 9.1, PostGIS - 2.0. O Postgre / PostGIS é instalado no repositório Application: Geo.

Após atualizações recentes, quando tento conectar-me ao meu banco de dados, recebo o seguinte erro:

    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

Eu procurei na web por esse erro ( dica-1 , dica-2 ) e parece que ele pode ter algo a ver com ld.so.config (ou comando ldconfig). Mas não consigo descobrir o que tenho que fazer no meu caso.

SS_Rebelious
fonte
2
é necessária uma versão recente do proj (> = 4.8). O que faz proj --versione / ou ldd `which proj`mostra?
Mike T
@ MikeToews, minha versão do proj é 4.7.1. Parece que preciso atualizá-lo.
SS_Rebelious
Eu instalei o proj 4.8 do site oficial. Mas ainda assim, quando projeto, ele me mostra> Rel. 4.7.1, 23 September 2009Como posso atualizá-lo para 4.8. Estou sem ideias :( Estou usando o Ubuntu 12.4 Obrigado Mo.
mmrs151 17/13/13

Respostas:

6

Graças ao MikeToews, fui capaz de corrigir esse problema. O PostGIS 2.0 no openSUSE depende libproj0e sua versão deve ser> = 4.8. De alguma forma, o gerenciador de pacotes não me notificou sobre a nova versão disponível para o, libproj0então eu verifiquei sua versão mais recente manualmente via Yast na guia "Versões". Após uma atualização, sou capaz de operar o banco de dados normalmente.

SS_Rebelious
fonte
isso não é verdade.
Evan Carroll
0

Não acredito que a resposta escolhida tenha algo a ver com o problema,

O que aconteceu

  1. O Postgre / PostGIS é instalado no repositório Application: Geo.
  2. O SO é openSUSE

Você instalou uma nova versão do PostGIS criada contra uma versão do proj que você não possui. Seu projeto provavelmente é fornecido pelo OpenSUSE. Você precisa instalar a versão do proj no repositório Application: Geo ou a versão do PostGIS no repositório principal do OpenSUSE. Essa é uma incompatibilidade entre cliente e dependência. Você deve registrar um bug no SUSE se o problema persistir.

Não é que o PostGIS não funcione em versões antigas do proj. É que o SUSE está construindo o PostGIS SOMENTE em versões mais recentes, então você precisa de uma.

PostGIS e projeto antigo

De um relatório de bug apresentado há dois anos ,

Então, basicamente, o PostGIS também pode funcionar com versões mais antigas do Proj4, mas ele precisa saber em tempo de compilação.

Parece que o binário do watsonta foi construído contra o Proj 4.8, mas estava sendo executado em uma versão anterior. Muito provavelmente um bug no pacote binário ou em suas dependências (o proj-4.8 + é uma dependência dos postgis binários, conforme construído pelo empacotador).

Eu acho que esse é o problema. Você construiu contra uma versão mais recente do proj que você instalou. Atualizar a instalação para a versão que você construiu agianst é apenas uma maneira de corrigir o problema.

Você pode ver essa função chamada aqui e é protegida por um if.

#if POSTGIS_PROJ_VERSION >= 48

Se isso não funcionar, você tem outro problema. É fornecido pelo sistema de compilação em uma macro de 10 anos

Evan Carroll
fonte
-1

mmrs151. Para atualizar da versão 4.7 para a proj 4.8 no Ubuntu 13.04. Pelo menos, me ajudou a resolver o mesmo problema.

$ sudo apt-get upgrade libproj-dev

Amimo Benja
fonte
Você poderia elaborar um pouco sua resposta? Como ele resolve o problema do OP?
Martin Martin
2
Esta resposta é inútil - o openSUSE não usa o apt.
SS_Rebelious
A resposta foi feita para mmrs151.
Amimo Benja