Не могу установить расширение на Postgresql - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь установить semver на свой Postgresql 12. Я успешно установил postgis и использовал следующую команду для установки pg-semver (расширение semver ) на свой сервер Centos 7:

yum install pg-semver

Затем я запустил

CREATE EXTENSION semver;

Я получил следующую ошибку:

не удалось открыть файл управления расширением / usr / pg sql -12 / share / extension / semver.control: Нет такого файла или каталога

Я скопировал все файлы из "/ usr / share / pgsql / extension /" в "/ usr / pg sql -12 / share / extension" , Теперь я получаю следующую ошибку:

ОШИБКА: ОШИБКА: не удалось получить доступ к файлу "semver": нет такого файла или каталога

ОБНОВЛЕНИЕ (28.02. 2020):

Я удалил pg-semver, потому что он обеспечивает PSQL 9.2. Теперь я пытаюсь собрать себя, используя документацию, предоставленную разработчиком.

Я загрузил расширение semver из https://github.com/theory/pg-semver/archive/master.zip и затем распаковал его. После этого я запускаю следующую команду:

make

и получаю:

make: Ничего не нужно делать для цели «все». затем:

make install

и получите:

/ bin / sh /usr/lib64/pgsql/pgxs/src/makefiles/../ .. / config / install- sh - c -m 644 ./semver.control '/ usr / share / pgsql / extension /' / bin / sh / usr / lib64 / pgsql / pgxs / src / makefiles / ../../config/install-sh - c -m 644 ./sql/semver--0.20.0.sql ./sql/semver--unpackaged--0.2.1.sql ./sql/semver--0.20.0--0.21.0.sql ./sql/semver--0.12.0--0.13.0.sql ./sql/semver--0.3.0- -0.4.0. sql ./sql/semver--0.16.0--0.17.0.sql ./sql/semver--0.13.0--0.15.0.sql ./sql/ semver - 0.11.0--0.12.0. sql ./sql/semver--0.2.4--0.3.0.sql ./sql/semver--0.2.1--0.2.4. sql ./sql/semver--0.5.0--0.10.0.sql ./sql/semver--0.10.0--0.11.0.sql ./sql/semver.sql ./sql/semver--0.17.0--0.20.0.sql ./sql/semver--0.15.0--0.16.0.sql '/ usr / share / pgsql / extension /' / bin / sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh - c -m 755 src / semver.so '/ usr / lib64 / pgsql / '/ bin / sh / usr / lib64 / pgsql / pgxs / src / makefi les /../../ config / install- sh - c -m 644 ./doc/semver.mmd '/ usr / share / doc / pgsql / extension /'

затем:

make installcheck

и получите:

============== удаление базы данных "contrib_regression" ======= ======= DROP DATABASE ============== создание базы данных "contrib_regression" ============= CREATE DATABASE ALTER DATABASE ==== ========== установка plpg sql ============== СОЗДАТЬ ЯЗЫК ============== запуск запросов регрессионного теста = ============= тестовая база ... СБОЙ (тестовый процесс завершен с кодом выхода 3)

--------------- 1 из 1 теста не пройден.

Различия, вызвавшие сбой некоторых тестов, можно посмотреть в файле "/tmp/ttt/pg-semver-master/regression.diffs". Копия отчета об испытаниях, которую вы видите выше, сохраняется в файле "/tmp/ttt/pg-semver-master/regression.out".

make: *** [installcheck] Ошибка 1

содержимое regression.out:

......! ок 278 - проверка минорной версии! ок 279 - функция get_semver_patch () должна существовать! ок 280 - семвер! ok 281 - Функция get_semver_patch () должна возвращать целое число! ок 282 - проверка версии патча! ok 283 - Функция get_semver_prerelease () должна существовать! ок 284 - семвер! ok 285 - Функция get_semver_prerelease () должна возвращать текст! ок 286 - предварительная проверка этикетки! ок 287 - 1.0.0 должно быть в диапазоне [1.0.0, 2.0.0]! ок 288 - 1.0.0 не должно быть в диапазоне [1.0.1, 2.0.0]! ок 289 - 2.0.0 не должно быть в диапазоне [1.0.1, 2.0.0)! ок 290 - 1.9999.9999 должен быть в диапазоне [1.0.1, 2.0.0)! ок 291 - 1000.0.0 должно быть в диапазоне [1.0.0,)! ОК 292 - Должен быть в состоянии работать с массивами полудиапазонов --- 1,2 ---- \ set ECHO none! psql: SQL / semver. sql: 30: ОШИБКА: не удалось получить доступ к файлу "semver": нет такого файла или каталога

В / usr / pg sql -12 / lib / нет файла semver.so в / usr / lib64 / pgsql / есть файл semver.so, но он также предназначен для версии 9.2?

Ответы [ 2 ]

3 голосов
/ 28 февраля 2020

Причина, по которой вы не можете установить semver, имеет две причины:

Вы получаете сообщение об ошибке could not access file "semver": No such file or directory, поскольку вы не скопировали /usr/lib64/pgsql/semver.so в /usr/pgsql-12/lib. Однако вы не можете просто скопировать это по следующей причине:

yum install pg-semver установит semver из библиотеки EPEL, которая является предварительно упакованной PostgreSQL версии 9.2, которая поставляется с CentOS 7. Вы установили PostgreSQL версию 12 (либо скомпилировав ее самостоятельно, либо загрузив репозиторий PGDG и установив пакет postgresql12). Файл semver.so, поставляемый с репозиторием EPEL, несовместим, так как он был скомпилирован для PostgreSQL версии 9.2, а не версии 12. Если вы попытаетесь загрузить EPEL semver.so в базу данных v.12, вы будете см .:

postgres=# create extension semver;
ERROR:  incompatible library "/usr/pgsql-12/lib/semver.so": version mismatch
DETAIL:  Server is version 12, library is version 9.2.

Таким образом, единственный способ установить semver - выполнить шаги по компиляции , подробно изложенные в документации :

make
make install
make installcheck
psql -c "CREATE EXTENSION semver;"

Если вы еще этого не сделали (и вы установили postgresql 12 через PGDG RPM), для загрузки и компиляции вам нужно будет сделать следующее:

yum -y install postgresql12-devel
yum -y groupinstall "Development Tools"

Вы также можете столкнуться с проблемами при компиляции Например: clang: error: unknown argument: '-flto=thin', поскольку RPM PGDG был скомпилирован с clang - вы можете обойти это, выполнив:

with_llvm=no make -e
with_llvm=no make -e install
with_llvm=no make -e installcheck
psql -c "create extension semver"

Раскрытие информации: я работаю на EnterpriseDB (EDB)

0 голосов
/ 25 февраля 2020

Следуйте этому руководству для установки semver:

https://pgxn.org/dist/semver/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...