Ich versuche, hstore in meiner PostgreSQL-Datenbank zu aktivieren, die auf einem Amazon Linux AMI läuft. Ich habe bereits eine Menge Hürden überwunden und bin am Ende bei diesem Fehler gelandet, den ich nicht überwinden kann:
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)
Ich versuche ldd --version
, meine GLIBC-Version abzurufen, und sie gibt zurück ldd (GNU libc) 2.17
.
Die einzigen Lösungen, die ich gefunden habe, schlagen vor
Wird ausgeführt
yum update
, was jedoch nicht viel Sinn ergibt, da auf meinem System offenbar eine neuere Version als erforderlich ausgeführt wird.Das Programm mit der Version
glibc
auf Ihrem System neu kompilieren, was ich nicht ganz verstehe. Welches Programm müsste ich neu kompilieren? PostgreSQL?
Das macht mich seit Tagen wahnsinnig und ich bin in eine Sackgasse geraten. Jede Hilfe ist sehr willkommen!
Antwort1
Der Fehler liegt auf derhstore
gemeinsam genutzte Bibliothek, daher ist dies wahrscheinlich die einzige, die mit Ihrer Version von GLIBC kompiliert werden muss. Die in Ihrem Postgres-Paket enthaltene Bibliothek wurde offensichtlich mit Version 2.14 kompiliert, während Ihre Version 2.17 ist.
Normalerweise hstore
sollte eine Version auf höherer Ebene ausreichend sein, aber die durchgeführte Prüfung lautet anscheinend „gleich 2.14“ statt „größer oder gleich 2.14“.
Der ArtikelBesondere PostgreSQL-Funktionen:hstore
beschreibt, wie die hstore
Bibliothek aus dem Quellcode installiert wird:
Führen Sie nach dem Herunterladen des Quellcodes und der Installation des Kerns die folgenden Befehle aus.
cd $PG_SOURCE_ROOT cd contrib/hstore make install
Zu diesem Zeitpunkt sind alle mit hstore verbundenen Bibliotheken und Dateien in $INSTALL_FOLDER/share/extension installiert.
$ ls $INSTALL_FOLDER/share/extension hstore--1.0--1.1.sql hstore--1.1.sql hstore--unpackaged--1.0.sql hstore.control
Stellen Sie dann eine Verbindung zu Ihrem Postgres-Server her und schließen Sie die hstore-Installation mit dem Befehl CREATE EXTENSION ab.
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)
Mit einem psql-Client können Sie mit „\dx“ die Liste der Erweiterungen überprüfen, die bereits auf Ihrem Server installiert sind.
Antwort2
Ich verwende Manjaro Linux (einen Fork von Arch) und hatte dies, nachdem ich Postgres von Version 10 auf 11 aktualisiert hatte.
(Bei mir war der Pfad etwas anders. Ich bekam: could not load library "/usr/lib/postgresql/hstore.so"
.)
Ich folgte demArch-Wiki-Anweisungen zum Upgrade von Postgres, und war im Handumdrehen einsatzbereit.
Antwort3
Holen Sie sich einen neueren hstore. Ihr hstore ist also zu alt für das System, das Sie verwenden. Oder versuchen Sie, ein kompatibles Glibc-Paket zum Zusammenfügen zu finden.