Я пытаюсь включить hstore в моей базе данных PostgreSQL, работающей на Amazon Linux AMI. Я уже преодолел кучу препятствий и в итоге получил эту ошибку, которую не могу обойти:
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)
Я бегу ldd --version
за своей версией GLIBC, а она возвращает ldd (GNU libc) 2.17
.
Единственные решения, с которыми я столкнулся, предполагают
Запуск
yum update
, что не имеет особого смысла, поскольку моя система, по-видимому, работает под управлением более новой версии, чем требуется.Перекомпилировать программу с версией,
glibc
которая есть в вашей системе, чего я не совсем понимаю. Какую программу мне придется перекомпилировать? PostgreSQL?
Это сводит меня с ума уже несколько дней, и я загнал себя в угол. Любая помощь будет высоко оценена!
решение1
Ошибка находится наhstore
общая библиотека, так что это, вероятно, единственная, которую нужно скомпилировать с вашей версией GLIBC. Та, что содержится в вашем пакете postgres, очевидно, была скомпилирована с версией 2.14, а ваша — 2.17.
Обычно hstore
должно быть удовлетворено версией более высокого уровня, но проверка, которую он выполняет, по-видимому, «равно 2,14» вместо «больше или равно 2,14».
СтатьяОсновные возможности PostgreSQL:hstore
описывает, как установить hstore
библиотеку из исходного кода:
После загрузки исходного кода и установки ядра выполните следующие команды.
cd $PG_SOURCE_ROOT cd contrib/hstore make install
На этом этапе все библиотеки и файлы, относящиеся к hstore, установлены в $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
Затем подключитесь к серверу Postgres и завершите установку hstore с помощью команды 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)
С помощью клиента psql '\dx' позволяет проверить список расширений, уже установленных на вашем сервере.
решение2
Я работаю на Manjaro Linux (ответвление Arch), и у меня возникла эта проблема после обновления Postgres с версии 10 до 11.
(У меня путь был немного другим. Я получил: could not load library "/usr/lib/postgresql/hstore.so"
.)
Я следовал заинструкции arch wiki по обновлению postgres, и был запущен в кратчайшие сроки.
решение3
Получите более новый hstore.so ваш слишком старый для вашей системы. Или попробуйте найти пакет compat-glibc для склеивания.