Estou tentando habilitar o hstore em meu banco de dados PostgreSQL em execução em um Amazon Linux AMI. Já superei vários obstáculos e acabei com este erro que não consigo superar:
ERROR: could not load library "/usr/lib64/pgsql/hstore.so": /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/pgsql/hstore.so)
Corro ldd --version
para pegar minha versão do GLIBC e ela retorna ldd (GNU libc) 2.17
.
As únicas soluções que encontrei sugerem
Running
yum update
, o que não faz muito sentido porque meu sistema parece estar executando uma versão mais recente do que a necessária.Recompilando o programa com a versão
glibc
que está no seu sistema, o que não entendo muito bem. Qual programa eu teria que recompilar? PostgreSQL?
Isso está me deixando maluco há dias e acabei em um canto. Qualquer ajuda é muito apreciada!
Responder1
O erro está nohstore
biblioteca compartilhada, então é provavelmente a única que precisa ser compilada com sua versão do GLIBC. O contido no seu pacote postgres evidentemente foi compilado com a versão 2.14, enquanto o seu é 2.17.
Normalmente hstore
deveria ficar satisfeito com uma versão de nível superior, mas a verificação que ela faz é aparentemente “igual a 2,14” em vez de “maior ou igual a 2,14”.
O artigoDestaque do recurso PostgreSQL:hstore
descreve como instalar a hstore
biblioteca a partir do código-fonte:
Depois de baixar o código-fonte e instalar o núcleo, execute os seguintes comandos.
cd $PG_SOURCE_ROOT cd contrib/hstore make install
Neste ponto todas as bibliotecas e arquivos relacionados ao hstore estão instalados em $INSTALL_FOLDER/share/extension.
$ ls $INSTALL_FOLDER/share/extension hstore--1.0--1.1.sql hstore--1.1.sql hstore--unpackaged--1.0.sql hstore.control
Em seguida, conecte-se ao servidor Postgres e conclua a instalação do hstore com o comando CREATE EXTENSION.
postgres=# CREATE EXTENSION hstore; CREATE EXTENSION postgres=# \dx hstore List of installed extensions Name | Version | Schema | Description --------+---------+--------+-------------------------------------------------- hstore | 1.1 | public | data type for storing sets of (key, value) pairs (1 row)
Com um cliente psql, '\dx' permite verificar a lista de extensões já instaladas em seu servidor.
Responder2
Estou executando o Manjaro Linux (um fork do Arch) e tive isso depois de atualizar o Postgres da versão 10 para a 11.
(O caminho foi um pouco diferente para mim. Consegui: could not load library "/usr/lib/postgresql/hstore.so"
.)
Eu segui oinstruções do arch wiki sobre como atualizar o postgres, e estava pronto e funcionando em pouco tempo.
Responder3
Obtenha um hstore.so mais recente, então o seu é muito antigo para o sistema que você está executando. Ou tente encontrar um pacote compat-glibc para colar.